Skip to content

Commit 09e2cbb

Browse files
authored
Merge pull request #93 from JuliaImages/teh/centered
Handle AxisArray and ImageMeta wrappers with `centered`
2 parents 51c608c + 8aefac1 commit 09e2cbb

File tree

4 files changed

+41
-1
lines changed

4 files changed

+41
-1
lines changed

REQUIRE

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,3 +12,4 @@ FFTViews
1212
ComputationalResources
1313
DataStructures 0.4.6
1414
TiledIteration
15+
Requires

src/ImageFiltering.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ using Statistics, LinearAlgebra
66
using ColorVectorSpace # for filtering RGB arrays
77
using Base: Indices, tail, fill_to_length, @pure, depwarn, @propagate_inbounds
88
using OffsetArrays: IdentityUnitRange # using the one in OffsetArrays makes this work with multiple Julia versions
9+
using Requires
910

1011
export Kernel, KernelFactors, Pad, Fill, Inner, NA, NoPad, Algorithm,
1112
imfilter, imfilter!,
@@ -84,6 +85,13 @@ function __init__()
8485
# @eval using DummyAF
8586
# end
8687
pop!(LOAD_PATH)
88+
@require AxisArrays="39de3d68-74b9-583c-8d2d-e117c070f3a9" begin
89+
centered(ax::AxisArrays.Axis{name}) where name = AxisArrays.Axis{name}(centered(ax.val))
90+
centered(a::AxisArrays.AxisArray) = AxisArrays.AxisArray(centered(a.data), centered.(AxisArrays.axes(a)))
91+
end
92+
@require ImageMetadata="bc367c6b-8a6b-528e-b4bd-a4b897500b49" begin
93+
centered(a::ImageMetadata.ImageMeta) = ImageMetadata.ImageMeta(centered(a.data), ImageMetadata.properties(a))
94+
end
8795
end
8896

8997
end # module

test/REQUIRE

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
AxisArrays
2+
ImageMetadata

test/basic.jl

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using ImageFiltering, OffsetArrays, Logging, Test
1+
using ImageFiltering, OffsetArrays, Logging, ImageMetadata, Test
2+
import AxisArrays
3+
using AxisArrays: AxisArray, Axis
24

35
@testset "basic" begin
46
v = OffsetArray([1,2,3], -1:1)
@@ -59,4 +61,31 @@ using ImageFiltering, OffsetArrays, Logging, Test
5961
rm(fname)
6062
end
6163

64+
@testset "centered" begin
65+
check_range(r, f, l) = (@test first(r) == f; @test last(r) == l)
66+
check_range_axes(r, f, l) = check_range(axes(r)[1], f, l)
67+
68+
check_range(axes(centered(1:3))[1], -1, 1)
69+
a = AxisArray(rand(3, 3), Axis{:y}(0.1:0.1:0.3), Axis{:x}(1:3))
70+
ca = centered(a)
71+
axs = axes(ca)
72+
check_range(axs[1], -1, 1)
73+
check_range(axs[2], -1, 1)
74+
axs = AxisArrays.axes(ca)
75+
check_range(axs[1].val, 0.1, 0.3)
76+
check_range(axs[2].val, 1, 3)
77+
check_range_axes(axs[1].val, -1, 1)
78+
check_range_axes(axs[1].val, -1, 1)
79+
am = ImageMeta(a; prop1="simple")
80+
ca = centered(am)
81+
axs = axes(ca)
82+
check_range(axs[1], -1, 1)
83+
check_range(axs[2], -1, 1)
84+
axs = AxisArrays.axes(ca)
85+
check_range(axs[1].val, 0.1, 0.3)
86+
check_range(axs[2].val, 1, 3)
87+
check_range_axes(axs[1].val, -1, 1)
88+
check_range_axes(axs[1].val, -1, 1)
89+
end
90+
6291
nothing

0 commit comments

Comments
 (0)