Bug: ImageTransformation Padding -> "Periodic", Padding -> “Reflected”, Padding -> “Reversed”
Bug: ImageTransformation Padding -> "Periodic", Padding -> “Reflected”, Padding -> “Reversed”
In[]:=
(*convertImagetorondeddata*)ImageDataR[img_]:=Round[ImageData@img,](*definetranslationtransformleft/rightdependingons*)s=-1;T=Sequence@@Apply[{x,y}{x+s*3,y}],Resampling"Linear",DataRange8+{{-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"}}]
-3
10
1
2
In[]:=
(*createimagefromRange[]*)image=Range[1,8]//Join[#,{9},Reverse@#]&//List//Image[#,ImageSizeSmall]&;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
Perform ImageTransformation (translate by 3) with various Padding Options
Padding -> 0
Padding -> 0
In[]:=
image//ImageTransformation[#,T,Padding0]&//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”
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”
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”
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”
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