matlab实现图像的左右翻转

xiaoxiao2021-02-27  655

代码一:这是我第一次在网上找的源代码,虽然能实现左右翻转的效果,但是却有两个问题。

I=imread('d:\1.png'); I2=I(:,end:-1:1); subplot(121); imshow(I); title('原始图像'); subplot(122); imshow(I2); title('反转后的图像');

这是代码一对应的效果图,形成了三个左右翻转以后的图像,并且在尺寸上还缩小了。这主要是因为图像是RGB的,是三通道的,但是操作却只针对了一通道。所以程序对每一个通道都进行了翻转然后显示出来。 代码二:

I=imread('./1.png'); subplot(121); imshow(I); title('原始图像'); %为什么会有k=1:3,那是因为现在的图像都有RGB三个通道 %因此需要在每个通道都进行翻转最终一起作用到翻转后的图像 %基于上面的理解,当我首先把图像经过灰度处理变成灰度图以后 %就可以不要分3层,而直接翻转。 for k=1:3 I2=fliplr(I(:,:,k)); end subplot(122); imshow(I2); title('变换后的图像');

这是代码二对应的效果图。 代码三: 自己基于上面的理解,重新写了个代码。来实现同样的效果。当然我的程序只是针对灰度图像了。

%1)先将RGB图像灰度化,不管你这幅图片原始就是黑白或彩色, %都是以RGB三三通道表示的图像 %2)直接将灰度化的图像用fliplr函数进行左右翻转 I=imread('./1.png'); subplot(121); imshow(I); I2=rgb2gray(I); %subplot(132); %imshow(I2); I3=fliplr(I2(:,:)); subplot(122); imshow(I3);

代码三对应的效果图。

转载请注明原文地址: https://www.6miu.com/read-1979.html

最新回复(0)