我在MATLAB中使用flipdim
命令的项目有问题。我需要用它来翻转RGB图像的红色和绿色。我设法用flipdim(e,3);
翻转红色和蓝色,但不知道如何解决这个问题。有人可以帮忙吗?
这是我到目前为止的代码:
%call an image
d=uigetfile('*.jpg','choose an image file');
%read an image ito an array
e=imread(d);
%define plot 1
subplot(1,2,1)
%show image original image
imshow(e)
%hold figure
hold
%rotate original image 90 degreesR
l=flip(e(:,:,1:2),3);
%define plot 2
subplot(1,2,2)
%show altered image
imshow(l)
答案 0 :(得分:3)
执行flipdim(e,3)
会反转所有频道,这就是红色和蓝色被翻转以及绿色保持不变的原因....这是有道理的,因为如果红色是第一个切片,绿色是第二个切片,蓝色是第三个切片,翻转它会使蓝色成为第一个,绿色成为第二个,红色成为第三个。
如果您只想翻转红色和绿色频道并仅使用flipdim
,请按照您的说明在第三维中使用flipdim
,但只能使用前两个频道。假设e
是原始图片,请创建新图片...在代码中调用l
,然后将flipdim
应用于此新图片的前两个频道:
l = e;
l(:,:,1:2) = flipdim(l(:,:,1:2), 3);
...但是,根本不需要使用flipdim
....我只是很聪明地将索引编入第三维:
l = e(:,:,[2 1 3]);
有效地按照您想要的顺序排列红色和绿色通道。