Skip to content

Commit 70d52cf

Browse files
authored
Adopt ImageBase for minfinite/maxfinite (#60)
1 parent 64f8123 commit 70d52cf

File tree

8 files changed

+23
-95
lines changed

8 files changed

+23
-95
lines changed

Project.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
name = "ImageContrastAdjustment"
22
uuid = "f332f351-ec65-5f6a-b3d1-319c6670881a"
33
authors = ["Dr. Zygmunt L. Szpak <zygmunt.szpak@gmail.com>"]
4-
version = "0.3.11"
4+
version = "0.3.12"
55

66
[deps]
7+
ImageBase = "c817782e-172a-44cc-b673-b171935fbb9e"
78
ImageCore = "a09fc81d-aa75-5fe9-8630-4744c3626534"
89
ImageTransformations = "02fcd773-0e25-5acc-982a-7f6622650795"
910
Parameters = "d96e819e-fc66-5662-9728-84c9c7592b0a"

src/HistogramAdjustmentAPI/HistogramAdjustmentAPI.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ module HistogramAdjustmentAPI
55
using ImageCore # ColorTypes is sufficient
66

77
# TODO Relax this to all image color types
8-
const GenericGrayImage = AbstractArray{<:Union{Number, AbstractGray}}
8+
using ..ImageContrastAdjustment: GenericGrayImage
99

1010
"""
1111
AbstractImageAlgorithm

src/ImageContrastAdjustment.jl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
11
module ImageContrastAdjustment
22

33
using ImageCore
4+
using ImageBase
45
using ImageTransformations: imresize
56
# Where possible we avoid a direct dependency to reduce the number of [compat] bounds
67
using ImageCore.MappedArrays
78
using Parameters: @with_kw # Same as Base.@kwdef but works on Julia 1.0
89

10+
# TODO Relax this to all image color types
11+
const GenericGrayImage = AbstractArray{<:Union{Number, AbstractGray}}
12+
913
# TODO: port HistogramAdjustmentAPI to ImagesAPI
1014
include("HistogramAdjustmentAPI/HistogramAdjustmentAPI.jl")
1115
import .HistogramAdjustmentAPI: AbstractHistogramAdjustmentAlgorithm,
1216
adjust_histogram, adjust_histogram!
1317

14-
# TODO Relax this to all image color types
15-
const GenericGrayImage = AbstractArray{<:Union{Number, AbstractGray}}
1618

17-
include("core.jl")
1819
include("build_histogram.jl")
1920
include("algorithms/common.jl")
2021
include("algorithms/adaptive_equalization.jl")

src/algorithms/common.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ function construct_pdfs(img::GenericGrayImage, targetimg::AbstractArray, nbins::
5252
if eltype(img) <: AbstractGray
5353
imin, imax = 0, 1
5454
else
55-
imin, imax = min(minfinite(img), minfinite(targetimg)), max(maxfinite(img), maxfinite(targetimg))
55+
imin, imax = min(minimum_finite(img), minimum_finite(targetimg)), max(maximum_finite(img), maximum_finite(targetimg))
5656
end
5757
edges, histogram = build_histogram(img, nbins, minval = imin, maxval = imax)
5858
_, target_histogram = build_histogram(targetimg, edges)

src/algorithms/linear_stretching.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ end
146146
function (f::LinearStretching)(out::GenericGrayImage, img::GenericGrayImage)
147147
T = eltype(out)
148148
FT = eltype(floattype(T))
149-
img_min, img_max = minfinite(img), maxfinite(img)
149+
img_min, img_max = minimum_finite(img), maximum_finite(img)
150150
# explicit annotation is needed because the ?: line mixes three value types:
151151
# Nothing, T, and typeof(f.src_minval)
152152
src_minval::FT = isnothing(f.src_minval) ? img_min : f.src_minval

src/build_histogram.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,8 @@ edges, counts = build_histogram(r, 256, minval = 0, maxval = 1)
147147
[1] E. Herrholz, "Parsimonious Histograms," Ph.D. dissertation, Inst. of Math. and Comp. Sci., University of Greifswald, Greifswald, Germany, 2011.
148148
"""
149149
function build_histogram(img::GenericGrayImage, nbins::Integer = 256;
150-
minval::Union{Real,AbstractGray}=minfinite(img),
151-
maxval::Union{Real,AbstractGray}=maxfinite(img))
150+
minval::Union{Real,AbstractGray}=minimum_finite(img),
151+
maxval::Union{Real,AbstractGray}=maximum_finite(img))
152152
edges = partition_interval(nbins, minval, maxval)
153153
build_histogram(img, edges)
154154
end
@@ -172,8 +172,8 @@ build_histogram(img::AbstractArray{C}) where C<:Color{N0f8} =
172172
build_histogram(mappedarray(Gray{N0f8}, img))
173173

174174
function build_histogram(img::AbstractArray{T}, nbins::Integer;
175-
minval::Union{Real,AbstractGray}=minfinite(img),
176-
maxval::Union{Real,AbstractGray}=maxfinite(img)) where T<:Union{N0f8, AbstractGray{N0f8}}
175+
minval::Union{Real,AbstractGray}=minimum_finite(img),
176+
maxval::Union{Real,AbstractGray}=maximum_finite(img)) where T<:Union{N0f8, AbstractGray{N0f8}}
177177
edgesraw, countsraw = build_histogram(img)
178178
return rebin(edgesraw, countsraw, nbins, minval, maxval)
179179
end

src/core.jl

Lines changed: 0 additions & 74 deletions
This file was deleted.

test/core.jl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
@testset "Core" begin
22
A = [NaN 1 2 3;
33
NaN 6 5 4]
4-
@test ImageContrastAdjustment.minfinite(A) == 1
5-
@test ImageContrastAdjustment.maxfinite(A) == 6
4+
@test ImageContrastAdjustment.minimum_finite(A) == 1
5+
@test ImageContrastAdjustment.maximum_finite(A) == 6
66
A = rand(10:20, 5, 5)
7-
@test ImageContrastAdjustment.minfinite(A) == minimum(A)
8-
@test ImageContrastAdjustment.maxfinite(A) == maximum(A)
7+
@test ImageContrastAdjustment.minimum_finite(A) == minimum(A)
8+
@test ImageContrastAdjustment.maximum_finite(A) == maximum(A)
99
A = reinterpret(N0f8, rand(0x00:0xff, 5, 5))
10-
@test ImageContrastAdjustment.minfinite(A) == minimum(A)
11-
@test ImageContrastAdjustment.maxfinite(A) == maximum(A)
10+
@test ImageContrastAdjustment.minimum_finite(A) == minimum(A)
11+
@test ImageContrastAdjustment.maximum_finite(A) == maximum(A)
1212
A = rand(Float32,3,5,5)
1313
img = colorview(RGB, A)
14-
dc = ImageContrastAdjustment.minfinite(img)-RGB{Float32}(minimum(A, dims=(2,3))...)
14+
dc = ImageContrastAdjustment.minimum_finite(img)-RGB{Float32}(minimum(A, dims=(2,3))...)
1515
@test norm(dc) < 1e-6
16-
dc = ImageContrastAdjustment.maxfinite(img)-RGB{Float32}(maximum(A, dims=(2,3))...)
16+
dc = ImageContrastAdjustment.maximum_finite(img)-RGB{Float32}(maximum(A, dims=(2,3))...)
1717
@test norm(dc) < 1e-6
18-
@test ImageContrastAdjustment.minfinite(x->x^2,[NaN,10,2]) == 4
19-
@test ImageContrastAdjustment.maxfinite(x->x^2,[NaN,10,2]) == 100
18+
@test ImageContrastAdjustment.minimum_finite(x->x^2,[NaN,10,2]) == 4
19+
@test ImageContrastAdjustment.maximum_finite(x->x^2,[NaN,10,2]) == 100
2020
end

0 commit comments

Comments
 (0)