New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bug in 3d cascade #92
Comments
Oh, duh, this isn't a bug. Watch what happens with a smaller and easier-to-understand example: julia> a = reshape(1:24, 3, 4, 2)
3×4×2 reshape(::UnitRange{Int64}, 3, 4, 2) with eltype Int64:
[:, :, 1] =
1 4 7 10
2 5 8 11
3 6 9 12
[:, :, 2] =
13 16 19 22
14 17 20 23
15 18 21 24
julia> b = similar(a);
julia> kf2 = kernelfactors(([1.0], [1.0]))
(ImageFiltering.KernelFactors.ReshapedOneD{Float64,2,0,Array{Float64,1}}([1.0]), ImageFiltering.KernelFactors.ReshapedOneD{Float64,2,1,Array{Float64,1}}([1.0]))
julia> kf3 = kernelfactors(([1.0], [1.0], [1.0]))
(ImageFiltering.KernelFactors.ReshapedOneD{Float64,3,0,Array{Float64,1}}([1.0]), ImageFiltering.KernelFactors.ReshapedOneD{Float64,3,1,Array{Float64,1}}([1.0]), ImageFiltering.KernelFactors.ReshapedOneD{Float64,3,2,Array{Float64,1}}([1.0]))
julia> for i in 1:size(b, 3)
b[:,:,i] = imfilter(a[:,:,i], kf2, Fill(0))
end
julia> imfilter(a, kf3, Fill(0))
3×4×2 Array{Float64,3}:
[:, :, 1] =
17.0 20.0 23.0 0.0
18.0 21.0 24.0 0.0
0.0 0.0 0.0 0.0
[:, :, 2] =
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
0.0 0.0 0.0 0.0
julia> b
3×4×2 Array{Int64,3}:
[:, :, 1] =
5 8 11 0
6 9 12 0
0 0 0 0
[:, :, 2] =
17 20 23 0
18 21 24 0
0 0 0 0 Both of these are just following the formula for a convolution. A key point is that ImageFiltering pays attention to the axes of the kernels (https://juliaimages.org/latest/imagefiltering.html): in particular, julia> axes([1.0])
(Base.OneTo(1),)
julia> axes(centered([1.0]))
(Base.Slice(0:0),) You want this: kf2 = kernelfactors(centered.((ones(3)/3, ones(3)/3)))
kf3 = kernelfactors(centered.((ones(3)/3, ones(3)/3, [1.0]))) and then they will agree. |
Interesting. Thanks for taking a look. |
From https://discourse.julialang.org/t/best-approach-to-smooth-array-none-of-my-approaches-are-very-useful/17633/12?u=tim.holy (with some typos fixed):
gives
false
. And it's not just floating-point roundoff: the only slice they agree on isc[:,:,10]
.The text was updated successfully, but these errors were encountered: