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