使用Matlab翻转图像

时间:2014-02-27 21:49:36

标签: matlab

我熟悉名为'MATLAB'的软件,我有一个名为'flipLtRt.m'的文件,其代码如下:

function newIm = flipLtRt(im)
% newIm is impage im flipped from left to right

[nr,nc,np]= size(im);    % dimensions of im
newIm= zeros(nr,nc,np);  % initialize newIm with zeros
newIm= uint8(newIm);     % Matlab uses unsigned 8-bit int for color values


for r= 1:nr
    for c= 1:nc
        for p= 1:np
            newIm(r,c,p)= im(r,nc-c+1,p);
        end
    end
end

通过应用此代码:

I = imread('Dog.jpg');  
Dog = flipLtRt(I);  
imshow(Dog);  

我的狗图像是镜像的。

我们很容易使用此文件'flipLtRt.m'来镜像图像,而无需实际理解代码。如果有人告诉我镜像图像,我可以简单地应用代码(第二部分),但如果有人告诉我实际解释每行代码如何做,我将无法做到。

有人能够解释代码的每一行实际上做了什么吗? 这是我无法理解的'for'部分。什么是'np'?新职位?

1 个答案:

答案 0 :(得分:1)

代码迭代图像 im 的行,由 nr 行和 np 列的矩阵表示,翻转:

  • 第一栏有最后一栏;
  • 倒数第二列;
  • 第c列,第nc-(c-1)列;

您可以看到此列在该行翻转:

newIm(r,c,p)= im(r,nc-c+1,p);

其中:

  • r 是行索引, nr 是行数;
  • c 是列索引 nc 是列数;
  • p 是颜色通道索引(例如:1 =红色,2 =绿色,3 =蓝色);
  • np 是颜色通道的数量;