在matlab中增加图像亮度的同时,如何检查像素值是否从255增加?

1hdlvixo  于 2023-01-05  发布在  Matlab
关注(0)|答案(2)|浏览(199)

我正在编写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)
kkbh8khc

kkbh8khc1#

在MATLAB中,整数加法是饱和的,这意味着如果m1uint8(通常从imread返回),那么m1+50永远不会大于255,如果和超过这个值,它将被设置为255。
MATLAB会自动完成你想做的事情,你不需要任何特殊的东西.
您帖子中的代码可以替换为:

m1 = imread('owl.pgm');
m2 = imread('mecca06.pgm');

m1 = m1 + 270;

figure
imshow(m1)
gkl3eglg

gkl3eglg2#

你不需要遍历所有像素,你可以把图像作为一个矩阵,简单地做一些事情:

m1 = imread('owl.pgm');
m1 = min(255,m1+50);

编辑:根据im1的数据类型,您可能需要先将其转换为可以处理您想要的操作的类型,例如,8位整数只允许最大为255的数字。在这种情况下,您可能需要转换为16位整数或浮点数。之后您可以再转换回来:

m1 = imread('owl.pgm');
m1 = double(m1);
m1 = min(255,m1+50);
m1 = uint8(m1);

相关问题