Skip to content

Commit 0bd7b31

Browse files
committed
require ImageBase 0.1.5 and ImageCore 0.9.3
1 parent 5876d29 commit 0bd7b31

File tree

5 files changed

+26
-54
lines changed

5 files changed

+26
-54
lines changed

Project.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ TiledIteration = "06e1c1a7-607b-532d-9fad-de7d9aa2abac"
3434
FileIO = "1"
3535
Graphics = "0.4, 1.0"
3636
ImageAxes = "0.6.9"
37-
ImageBase = "0.1.3"
37+
ImageBase = "0.1.5"
3838
ImageContrastAdjustment = "0.3.3"
39-
ImageCore = "0.9"
39+
ImageCore = "0.9.3"
4040
ImageDistances = "0.2.5"
4141
ImageFiltering = "0.7"
4242
ImageIO = "0.0.1, 0.3, 0.4, 0.5"

src/algorithms.jl

Lines changed: 6 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ macro test_approx_eq_sigma_eps(A, B, sigma, eps)
6868
kern = KernelFactors.IIRGaussian($(esc(sigma)))
6969
Af = imfilter($(esc(A)), kern, NA())
7070
Bf = imfilter($(esc(B)), kern, NA())
71-
diffscale = max(_abs(maxabsfinite($(esc(A)))), _abs(maxabsfinite($(esc(B)))))
71+
diffscale = max(_abs(maximum_finite(abs, $(esc(A)))), _abs(maximum_finite(abs, $(esc(B)))))
7272
d = sad(Af, Bf)
7373
if d > length(Af)*diffscale*($(esc(eps)))
7474
error("Arrays A and B differ")
@@ -104,7 +104,7 @@ function test_approx_eq_sigma_eps(A::AbstractArray, B::AbstractArray,
104104
kern = KernelFactors.IIRGaussian(sigma)
105105
Af = imfilter(A, kern, NA())
106106
Bf = imfilter(B, kern, NA())
107-
diffscale = max(_abs(maxabsfinite(A)), _abs(maxabsfinite(B)))
107+
diffscale = max(_abs(maximum_finite(abs, A)), _abs(maximum_finite(abs, B)))
108108
d = sad(Af, Bf)
109109
diffpct = d / (length(Af) * diffscale)
110110
if diffpct > eps
@@ -131,42 +131,6 @@ end
131131
imgaussiannoise(img::AbstractArray{T}, variance::Number) where {T} = imgaussiannoise(img, variance, 0)
132132
imgaussiannoise(img::AbstractArray{T}) where {T} = imgaussiannoise(img, 0.01, 0)
133133

134-
# image gradients
135-
136-
function div(p::AbstractArray{T,3}) where T
137-
# Definition from the Chambolle citation below, between Eqs. 5 and 6
138-
# This is the adjoint of -forwarddiff
139-
inds = axes(p)[1:2]
140-
out = similar(p, inds)
141-
Router = CartesianIndices(inds)
142-
rstp = _oneunit(first(Router))
143-
Rinner = _clippedinds(Router,rstp)
144-
# Since most of the points are in the interior, compute them more quickly by avoiding branches
145-
for I in Rinner
146-
out[I] = p[I,1] - p[I[1]-1, I[2], 1] +
147-
p[I,2] - p[I[1], I[2]-1, 2]
148-
end
149-
# Handle the edge points
150-
for I in EdgeIterator(Router, Rinner)
151-
out[I] = 0
152-
if I[1] == first(inds[1])
153-
out[I] += p[I, 1]
154-
elseif I[1] == last(inds[1])
155-
out[I] -= p[I[1]-1, I[2], 1]
156-
else
157-
out[I] += p[I,1] - p[I[1]-1, I[2], 1]
158-
end
159-
if I[2] == first(inds[2])
160-
out[I] += p[I, 2]
161-
elseif I[2] == last(inds[2])
162-
out[I] -= p[I[1], I[2]-1, 2]
163-
else
164-
out[I] += p[I,2] - p[I[1], I[2]-1, 2]
165-
end
166-
end
167-
out
168-
end
169-
170134
"""
171135
```
172136
imgr = imROF(img, λ, iterations)
@@ -188,12 +152,12 @@ function imROF(img::AbstractMatrix{T}, λ::Number, iterations::Integer) where T<
188152
s1, s2 = size(img)
189153
p = zeros(T, s1, s2, 2)
190154
# This iterates Eq. (9) of the Chambolle citation
191-
local u
155+
u = similar(img)
192156
τ = 1/4 # see 2nd remark after proof of Theorem 3.1.
193157
for i = 1:iterations
194-
div_p = div(p)
195-
u = img - λ*div_p # multiply term inside ∇ by -λ. Thm. 3.1 relates this to u via Eq. 7.
196-
grad_u = cat(fdiff(u, dims=1, boundary=:zero), fdiff(u, dims=2, boundary=:zero), dims=3)
158+
div_p = ImageBase.FiniteDiff.fdiv(view(p, :, :, 1), view(p, :, :, 2))
159+
u .= img - λ*div_p # multiply term inside ∇ by -λ. Thm. 3.1 relates this to u via Eq. 7.
160+
grad_u = cat(ImageBase.fdiff(u, dims=1, boundary=:zero), ImageBase.fdiff(u, dims=2, boundary=:zero), dims=3)
197161
grad_u_mag = sqrt.(sum(abs2, grad_u, dims=3))
198162
p .= (p .-/λ).*grad_u)./(1 .+/λ).*grad_u_mag)
199163
end

src/deprecations.jl

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,10 +1077,10 @@ function ColorVectorSpace.complement(x::AbstractArray)
10771077
end
10781078

10791079
# ImageBase.fdiff is more performent and generic
1080-
@deprecate forwarddiffx(X) fdiff(X, dims=2, boundary=:zero)
1081-
@deprecate forwarddiffy(X) fdiff(X, dims=1, boundary=:zero)
1082-
@deprecate backdiffx(X) fdiff(X, dims=2, rev=true, boundary=:zero)
1083-
@deprecate backdiffy(X) fdiff(X, dims=1, rev=true, boundary=:zero)
1080+
@deprecate forwarddiffx(X) ImageBase.FiniteDiff.fdiff(X, dims=2, boundary=:zero)
1081+
@deprecate forwarddiffy(X) ImageBase.FiniteDiff.fdiff(X, dims=1, boundary=:zero)
1082+
@deprecate backdiffx(X) ImageBase.FiniteDiff.fdiff(X, dims=2, rev=true, boundary=:zero)
1083+
@deprecate backdiffy(X) ImageBase.FiniteDiff.fdiff(X, dims=1, rev=true, boundary=:zero)
10841084

10851085
# This is now replaced by ImageTransformations and Interpolations
10861086
function bilinear_interpolation(img::AbstractArray{T,N}, xs::Vararg{<:Number, N}) where {T,N}
@@ -1144,3 +1144,5 @@ end
11441144
@deprecate boxdiff(Ai::IntegralArray{T,2}, y::UnitRange, x::UnitRange) where T Ai[first(y)..last(y), first(x)..last(x)]
11451145
@deprecate boxdiff(Ai::IntegralArray{T,2}, tl::CartesianIndex, br::CartesianIndex) where T Ai[tl[1]..br[1], tl[2]..br[2]]
11461146
@deprecate boxdiff(Ai::IntegralArray{T,2}, tl_y::Integer, tl_x::Integer, br_y::Integer, br_x::Integer) where T Ai[tl_y..br_y, tl_x..br_x]
1147+
1148+
@deprecate div(A::AbstractArray{<:Any,3}) ImageBase.FiniteDiff.fdiv(view(A, :, :, 1), view(A, :, :, 2)) false

test/algorithms.jl

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -250,12 +250,6 @@ using Test, Suppressor
250250
end
251251

252252
@testset "imROF" begin
253-
# Test that -div is the adjoint of forwarddiff
254-
p = rand(3,3,2)
255-
u = rand(3,3)
256-
gu = cat(fdiff(u, dims=1, boundary=:zero), fdiff(u, dims=2, boundary=:zero), dims=3)
257-
@test sum(-Images.div(p) .* u) sum(p .* gu)
258-
259253
img = [0.1 0.2 0.1 0.8 0.9 0.7;
260254
0.2 0.1 0.1 0.8 0.1 0.8;
261255
0.1 0.2 0.1 0.7 0.9 0.8]

test/legacy.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,4 +286,16 @@ using Images, Images.OffsetArrays, Statistics, Test
286286
@test @inferred(component_centroids(lbltarget)) == Tuple[(1.5,2.5),(4/3,4/3),(5/3,11/3)]
287287
end
288288

289+
# moved to ImageBase.FiniteDiff.fdiv
290+
@testset "div" begin
291+
# Test that -div is the adjoint of forwarddiff
292+
p = rand(3,3,2)
293+
u = rand(3,3)
294+
gu = cat(
295+
ImageBase.FiniteDiff.fdiff(u, dims=1, boundary=:periodic),
296+
ImageBase.FiniteDiff.fdiff(u, dims=2, boundary=:periodic),
297+
dims=3)
298+
@test sum(-Images.div(p) .* u) sum(p .* gu)
299+
end
300+
289301
end

0 commit comments

Comments
 (0)