我正在编写matlab的代码,其中我只是读取图像,然后我在图像的每个像素上添加+ 50,它工作正常,并且与它沿着,我想用if语句检查像素值,如果像素值超过255,则将此像素值设置为255。但if语句在这里不工作是我的代码
m1 = imread('owl.pgm');
m2 = imread('mecca06.pgm');
for i=1: size(m1,1)
for j=1: size(m1,2)
m1(i,j) = m1(i,j)+270;
if m1(i,j)>=255
m1(i,j)= 255;
end
end
end
figure
imshow(m1)
2条答案
按热度按时间kkbh8khc1#
在MATLAB中,整数加法是饱和的,这意味着如果
m1
是uint8
(通常从imread
返回),那么m1+50
永远不会大于255,如果和超过这个值,它将被设置为255。MATLAB会自动完成你想做的事情,你不需要任何特殊的东西.
您帖子中的代码可以替换为:
gkl3eglg2#
你不需要遍历所有像素,你可以把图像作为一个矩阵,简单地做一些事情:
编辑:根据
im1
的数据类型,您可能需要先将其转换为可以处理您想要的操作的类型,例如,8位整数只允许最大为255的数字。在这种情况下,您可能需要转换为16位整数或浮点数。之后您可以再转换回来: