Skip to content

Commit 55c1310

Browse files
Remove Images.jl dep (#70)
1 parent abc21bc commit 55c1310

File tree

9 files changed

+28
-18
lines changed

9 files changed

+28
-18
lines changed

Project.toml

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,12 @@ version = "1.5.1"
44

55
[deps]
66
Clustering = "aaaa29a8-35af-508c-8bc3-b662a17a0fe5"
7+
ColorVectorSpace = "c3611d14-8923-5661-9e6a-0046d554d3a4"
78
DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
89
Distances = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7"
10+
ImageCore = "a09fc81d-aa75-5fe9-8630-4744c3626534"
911
ImageFiltering = "6a3955dd-da59-5b1f-98d4-e7296123deb5"
10-
Images = "916415d5-f1e6-5110-898d-aaa5f9f070e0"
12+
ImageMorphology = "787d08f9-d448-5407-9aad-5290dd7ab264"
1113
LightGraphs = "093fc24a-ae57-5d10-9952-331d41423f4d"
1214
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
1315
MetaGraphs = "626554b9-1ddb-594c-aa3c-2596fe9399a5"
@@ -18,11 +20,13 @@ Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2"
1820

1921
[compat]
2022
Clustering = "0.10, 0.11, 0.12, 0.13, 0.14"
23+
ColorVectorSpace = "0.7, 0.8"
2124
DataStructures = "0.17.11, 0.18"
2225
Distances = "0.8, 0.9.2, 0.10"
2326
Documenter = "0.24, 0.25"
27+
ImageCore = "0.8.6"
2428
ImageFiltering = "0.6"
25-
Images = "0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.24"
29+
ImageMorphology = "0.2.6"
2630
LightGraphs = "1.1"
2731
MetaGraphs = "0.6.6"
2832
RegionTrees = "0.2, 0.3"
@@ -32,7 +36,8 @@ julia = "1"
3236

3337
[extras]
3438
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
39+
Images = "916415d5-f1e6-5110-898d-aaa5f9f070e0"
3540
Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
3641

3742
[targets]
38-
test = ["Documenter", "Test"]
43+
test = ["Documenter", "Images", "Test"]

src/ImageSegmentation.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module ImageSegmentation
33
import Base: show
44

55
using LinearAlgebra, Statistics
6-
using Images, DataStructures, StaticArrays, ImageFiltering, LightGraphs, SimpleWeightedGraphs, RegionTrees, Distances, StaticArrays, Clustering, MetaGraphs
6+
using DataStructures, StaticArrays, ImageCore, ImageFiltering, ImageMorphology, LightGraphs, SimpleWeightedGraphs, RegionTrees, Distances, StaticArrays, Clustering, MetaGraphs
77
import Clustering: kmeans, fuzzy_cmeans
88

99
include("compat.jl")

src/clustering.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
function img_to_data(img::AbstractArray{T,N}) where T<:Colorant where N
2-
AT = Images.accum(T)
2+
AT = accum_type(T)
33
aimg = AT.(img)
44
pimg = parent(aimg)
55
ch = channelview(pimg)

src/core.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
accum_type(::Type{T}) where {T<:Integer} = Int
2+
accum_type(::Type{Float32}) = Float32
3+
accum_type(::Type{T}) where {T<:Real} = Float64
4+
accum_type(::Type{C}) where {C<:Colorant} = base_colorant_type(C){accum_type(eltype(C))}
5+
16
"""
27
`SegmentedImage` type contains the index-label mapping, assigned labels,
38
segment mean intensity and pixel count of each segment.

src/fast_scanning.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
sharpness(img::AbstractArray{CT,N}) where {CT<:Images.NumberLike,N} = var(imfilter(img, Kernel.Laplacian(ntuple(i->true, Val(N)))))
1+
sharpness(img::AbstractArray{CT,N}) where {CT<:ImageCore.NumberLike,N} = var(imfilter(img, Kernel.Laplacian(ntuple(i->true, Val(N)))))
22

3-
function adaptive_thres(img::AbstractArray{CT,N}, block::NTuple{N,Int}) where {CT<:Images.NumberLike,N}
3+
function adaptive_thres(img::AbstractArray{CT,N}, block::NTuple{N,Int}) where {CT<:ImageCore.NumberLike,N}
44
threshold = zeros(Float64, block)
55
block_length = CartesianIndex(ntuple(i->ceil(Int,length(axes(img,i))/block[i]),Val(N)))
66
net_s = sharpness(img)
@@ -20,7 +20,7 @@ getscalar(A::AbstractArray{T,N}, i::CartesianIndex{N}, block_length::CartesianIn
2020

2121
getscalar(a::Real, i...) = a
2222

23-
fast_scanning(img::AbstractArray{CT,N}, block::NTuple{N,Int} = ntuple(i->4,Val(N))) where {CT<:Images.NumberLike,N} =
23+
fast_scanning(img::AbstractArray{CT,N}, block::NTuple{N,Int} = ntuple(i->4,Val(N))) where {CT<:ImageCore.NumberLike,N} =
2424
fast_scanning(img, adaptive_thres(img, block))
2525

2626
"""
@@ -40,7 +40,7 @@ Segments the N-D image using a fast scanning algorithm and returns a
4040
4141
# Examples:
4242
43-
```jldoctest; setup = :(using Images, ImageSegmentation)
43+
```jldoctest; setup = :(using ImageCore, ImageMorphology, ImageSegmentation)
4444
julia> img = zeros(Float64, (3,3));
4545
4646
julia> img[2,:] .= 0.5;

src/felzenszwalb.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ function felzenszwalb(edges::Array{ImageEdge}, num_vertices::Int, k::Real, min_s
8080
return index_map, num_sets
8181
end
8282

83-
meantype(::Type{T}) where T = typeof(zero(Images.accum(T))/2)
83+
meantype(::Type{T}) where T = typeof(zero(accum_type(T))/2)
8484

8585
function felzenszwalb(img::AbstractArray{T, 2}, k::Real, min_size::Int = 0) where T<:Union{Real,Color}
8686

src/region_growing.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11

2-
default_diff_fn(c1::CT1,c2::CT2) where {CT1<:Union{Colorant,Real}, CT2<:Union{Colorant,Real}} = sqrt(sum(abs2,(c1)-Images.accum(CT2)(c2)))
2+
default_diff_fn(c1::CT1,c2::CT2) where {CT1<:Union{Colorant,Real}, CT2<:Union{Colorant,Real}} = sqrt(sum(abs2,(c1)-accum_type(CT2)(c2)))
33

44
"""
55
seg_img = seeded_region_growing(img, seeds, [kernel_dim], [diff_fn])
@@ -30,7 +30,7 @@ and returns a [`SegmentedImage`](@ref) containing information about the segments
3030
3131
# Examples
3232
33-
```jldoctest; setup = :(using Images, ImageSegmentation)
33+
```jldoctest; setup = :(using ImageCore, ImageMorphology,ImageSegmentation)
3434
julia> img = zeros(Gray{N0f8},4,4);
3535
3636
julia> img[2:4,2:4] .= 1;
@@ -213,7 +213,7 @@ and returns a [`SegmentedImage`](@ref) containing information about the segments
213213
214214
# Examples
215215
216-
```jldoctest; setup = :(using Images, ImageSegmentation)
216+
```jldoctest; setup = :(using ImageCore, ImageMorphology, ImageSegmentation)
217217
julia> img = zeros(Gray{N0f8},4,4);
218218
219219
julia> img[2:4,2:4] .= 1;

src/region_merging.jl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ Returns true if `img` is homogeneous.
4343
4444
# Examples
4545
46-
```jldoctest; setup = :(using Images, ImageSegmentation)
46+
```jldoctest; setup = :(using ImageCore, ImageMorphology, ImageSegmentation)
4747
julia> img = 0.1*rand(6, 6);
4848
4949
julia> img[4:end, 4:end] .+= 10;
@@ -101,7 +101,7 @@ Returns true if `img` is homogeneous.
101101
102102
# Examples
103103
104-
```jldoctest; setup = :(using Images, ImageSegmentation)
104+
```jldoctest; setup = :(using ImageCore, ImageMorphology, ImageSegmentation)
105105
julia> img = 0.1*rand(6, 6);
106106
107107
julia> img[4:end, 4:end] .+= 10;

src/watershed.jl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Parameters:
3131
3232
# Example
3333
34-
```jldoctest; setup = :(using Images, ImageSegmentation)
34+
```jldoctest; setup = :(using ImageCore, ImageMorphology, ImageSegmentation)
3535
julia> seeds = falses(100, 100); seeds[50, 25] = true; seeds[50, 75] = true;
3636
3737
julia> dists = distance_transform(feature_transform(seeds)); # calculate distances from seeds
@@ -46,7 +46,7 @@ julia> labels_map(results); # labels of segmented image
4646
function watershed(img::AbstractArray{T, N},
4747
markers::AbstractArray{S,N};
4848
mask::AbstractArray{Bool, N}=fill(true, axes(img)),
49-
compactness::Real = 0.0) where {T<:Images.NumberLike, S<:Integer, N}
49+
compactness::Real = 0.0) where {T<:ImageCore.NumberLike, S<:Integer, N}
5050

5151
if axes(img) != axes(markers)
5252
error("image size doesn't match marker image size")
@@ -149,7 +149,7 @@ Suppresses all minima in grayscale image whose depth is less than h.
149149
150150
H-minima transform is defined as the reconstruction by erosion of (img + h) by img. See Morphological image analysis by Soille pg 170-172.
151151
"""
152-
function hmin_transform(img::Array{T, N}, h::Real) where {T<:Images.NumberLike, N}
152+
function hmin_transform(img::Array{T, N}, h::Real) where {T<:ImageCore.NumberLike, N}
153153
out = img.+h
154154
while true
155155
temp = max.(img, erode(out))

0 commit comments

Comments
 (0)