MATLAB 中的图像转置
Image transpose in MATLAB
如何转置具有 RGB 值的图像?也就是说,第一行中的所有像素都应成为第 1 列中的像素,依此类推。
对于简单的一维案例,这是:
B=A';
我在寻找类似的东西
img=imread('name.bmp');
R=R';
G=G';
B=B';
然后以某种方式将它们 assemble 变成新图像。
你可以使用简短的 permute
-
permute(img,[2 1 3])
基本上它交换行与列保持三维完整,即转置每个 3D 切片。这种方法的优势在于,即使您在三维中有 4 个切片,它也可以工作,例如对于深度信息通常存储为 dim3 中的第 4 个切片的图像。
为了完整起见,您可以使用 imrotate and flipdim 不过顺序确实很重要。在这里我们翻转列(这就是 2)然后旋转 90 度
imshow(imrotate(flipdim(im,2),90))
如果我们先进行旋转,我们将不得不翻转行(这就是 1)
imshow(flipdim(imrotate(im,90),1))
自从在 Matlab 中"Transpose on ND array is not defined",您可以分别转置每个通道:
[r,c,z] = size(im);
tmp = zeros(c,r,z);
for k=1:z
tmp(:,:,k) = im(:,:,k)';
end
如何转置具有 RGB 值的图像?也就是说,第一行中的所有像素都应成为第 1 列中的像素,依此类推。
对于简单的一维案例,这是:
B=A';
我在寻找类似的东西
img=imread('name.bmp');
R=R';
G=G';
B=B';
然后以某种方式将它们 assemble 变成新图像。
你可以使用简短的 permute
-
permute(img,[2 1 3])
基本上它交换行与列保持三维完整,即转置每个 3D 切片。这种方法的优势在于,即使您在三维中有 4 个切片,它也可以工作,例如对于深度信息通常存储为 dim3 中的第 4 个切片的图像。
为了完整起见,您可以使用 imrotate and flipdim 不过顺序确实很重要。在这里我们翻转列(这就是 2)然后旋转 90 度
imshow(imrotate(flipdim(im,2),90))
如果我们先进行旋转,我们将不得不翻转行(这就是 1)
imshow(flipdim(imrotate(im,90),1))
自从在 Matlab 中"Transpose on ND array is not defined",您可以分别转置每个通道:
[r,c,z] = size(im);
tmp = zeros(c,r,z);
for k=1:z
tmp(:,:,k) = im(:,:,k)';
end