利用matlab实现图像颜色变化

利用matlab实现图像颜色变化,matlab,Matlab,我正在使用下面的一段代码。我仍在熟悉软件和代码。 我已经注释了几行代码。 但我仍然停留在“for”循环部分。 基本上,我想做的是用简单的英语解释for循环的实际功能 for r= 1:nr for c= 1:nc if ( im(r,c,1)>180 && im(r,c,2)>180 && im(r,c,3)>180 ) % white feather of the duck; now changi

我正在使用下面的一段代码。我仍在熟悉软件和代码。
我已经注释了几行代码。 但我仍然停留在“for”循环部分。
基本上,我想做的是用简单的英语解释for循环的实际功能

for r= 1:nr
    for c= 1:nc
        if ( im(r,c,1)>180 && im(r,c,2)>180 && im(r,c,3)>180 )
            % white feather of the duck; now changing it to yellow
            newIm(r,c,1)= 225;
            newIm(r,c,2)= 225;
            newIm(r,c,3)= 0;
        else  % the rest of the picture; no change
            for p= 1:np
                newIm(r,c,p)= im(r,c,p);
            end
        end
    end
end

imshow(newIm) % displays the image  
如果我说:

'代码在图像im的行上迭代,图像im由一个包含nr行和np列的矩阵表示,其中,如果行索引和列索引颜色红色、绿色和蓝色大于180,则将颜色白色更改为黄色;具体来说,行索引和列索引将红色和绿色的值设置为255,而将蓝色的值设置为0(null),这最终会导致颜色为黄色

可以吗

else 
   for p= 1:np
         newIm(r,c,p)= im(r,c,p);
但是对上面显示的代码有什么简单的解释呢?
我知道图像没有改变,但我无法解释我想怎么做。p=1:np的确切含义是什么?
如果我上面的解释是错误的,您是否能够在必要时修复并添加信息?

我只是想了解它真正的功能。

1:
r
c
在这个循环中是常量-你认为例如
x(p)=y(p)
会做什么?2:
im
不是矩阵,它是一个三维数组-每个“像素”在第三维上都有3个元素我认为你写的是对的。
if
语句正在查看像素的颜色。如果是白色(所有3个数字都大于180,则像素变为黄色。如果不是所有值都大于180(因此像素不是白色)然后,
else
部分被激活,像素在
newIm
中保持不变。因此,
else
只是将像素从原始图像复制到新图像。这是我之前关于matlap图像镜像的问题。向我解释的人很清楚。这是变量,不是吗?这是的缩写“图像”。请参阅: