Bug: ImageTransformation Padding -> "Periodic", Padding -> “Reflected”, Padding -> “Reversed”

In[]:=
(*convertImagetorondeddata*)​​ImageDataR[img_]:=Round[ImageData@img,
-3
10
]​​(*definetranslationtransformleft/rightdependingons*)​​s=-1;​​T=Sequence@@Apply[{x,y}{x+s*3,y}],Resampling"Linear",DataRange8+
1
2
{{-1,1},{-1,1}};​​CeckTrue[v_]:=If[v,Style[v,{15,Bold,Darker@Green}],Style[v,{15,Bold,Red}]]​​TF[d_]:=TableForm[d,TableHeadings{{"Original","ImageTransform","ArrayPad"}}]
In[]:=
(*createimagefromRange[]*)​​image=Range[1,8]//Join[#,{9},Reverse@#]&//List//Image[#,ImageSizeSmall]&;​​image//ImageAdjust​​(*converttodata*)​​data=image//ImageDataR
Out[]=
Out[]=
{{1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1}}

Perform ImageTransformation (translate by 3) with various Padding Options

Padding -> 0

In[]:=
image//ImageTransformation[#,T,Padding0]&//ImageDataR;​​Join[data,%,{ArrayPad[data[[1]],s{-3,3},0]}]//TF​​%[[-1]]%[[-2]]//CeckTrue
Out[]//TableForm=
Original
1
2
3
4
5
6
7
8
9
8
7
6
5
4
3
2
1
ImageTransform
0
0
0
1
2
3
4
5
6
7
8
9
8
7
6
5
4
ArrayPad
0
0
0
1
2
3
4
5
6
7
8
9
8
7
6
5
4
Out[]=
True

Padding -> “Fixed”

In[]:=
image//ImageTransformation[#,T,Padding"Fixed"]&//ImageDataR;​​Join[data,%,{ArrayPad[data[[1]],s{-3,3},"Fixed"]}]//TF​​%[[-1]]%[[-2]]//CeckTrue
Out[]//TableForm=
Original
1
2
3
4
5
6
7
8
9
8
7
6
5
4
3
2
1
ImageTransform
1
1
1
1
2
3
4
5
6
7
8
9
8
7
6
5
4
ArrayPad
1
1
1
1
2
3
4
5
6
7
8
9
8
7
6
5
4
Out[]=
True

Padding -> “Periodic”

In[]:=
image//ImageTransformation[#,T,Padding"Periodic"]&//ImageDataR;​​Join[data,%,{ArrayPad[data[[1]],s{-3,3},"Periodic"]}]//TF​​%[[-1]]%[[-2]]//CeckTrue
Out[]//TableForm=
Original
1
2
3
4
5
6
7
8
9
8
7
6
5
4
3
2
1
ImageTransform
2
1
1
1
2
3
4
5
6
7
8
9
8
7
6
5
4
ArrayPad
3
2
1
1
2
3
4
5
6
7
8
9
8
7
6
5
4
Out[]=
False

Padding -> “Reflected”

In[]:=
image//ImageTransformation[#,T,Padding"Reflected"]&//ImageDataR;​​Join[data,%,{ArrayPad[data[[1]],s{-3,3},"Reflected"]}]//TF​​%[[-1]]%[[-2]]//CeckTrue
Out[]//TableForm=
Original
1
2
3
4
5
6
7
8
9
8
7
6
5
4
3
2
1
ImageTransform
2
1
2
1
2
3
4
5
6
7
8
9
8
7
6
5
4
ArrayPad
4
3
2
1
2
3
4
5
6
7
8
9
8
7
6
5
4
Out[]=
False

Padding -> “Reversed”

In[]:=
image//ImageTransformation[#,T,Padding"Reversed"]&//ImageDataR;​​Join[data,%,{ArrayPad[data[[1]],s{-3,3},"Reversed"]}]//TF​​%[[-1]]%[[-2]]//CeckTrue
Out[]//TableForm=
Original
1
2
3
4
5
6
7
8
9
8
7
6
5
4
3
2
1
ImageTransform
1
1
1
1
2
3
4
5
6
7
8
9
8
7
6
5
4
ArrayPad
3
2
1
1
2
3
4
5
6
7
8
9
8
7
6
5
4
Out[]=
False