如何使用flipdim翻转图像中的红色和绿色通道?

时间:2015-10-01 06:18:21

标签: image matlab image-processing rgb

我在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)

1 个答案:

答案 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]);

有效地按照您想要的顺序排列红色和绿色通道。