美文网首页
图像的点运算2

图像的点运算2

作者: 还浴月 | 来源:发表于2018-07-16 09:17 被阅读0次

    灰度的线性变换

    线性灰度变换函数f(x)是一个一维线性函数。可以用

    Db=f(Da)=kDa+b
    

    进行表示,其中k是线性函数的斜率,k是线性函数的截距,而Da表示输入图像的灰度,Db表示输出图像的灰度。

    • 当k>1的时候,输出图像的对比度将会增大;反之,输出图像的对比度将会减小
    • 当k=1且b不等于0的时候,操作仅使所有的像素的灰度值上移或下移,效果也就是让亮度变大或者变小。
    • 当k<0,暗区域将会变亮,亮区域将会变暗,可能是由于像素亮度达到饱和,也就是超过[0,255]这个区间,从而丢失了一部分细节。
    • 特殊情况,当k=1,b=0时,输入输出图像相同;当k=-1,b=255时,输入输出图像灰度正好反转(可以用于增强暗色图像中亮度较大的细节部分)。

    用matlab进行了不同参数的基本线性变换的操作,如下,

    I = imread('test.bmp');     % 读入原图像
    
    I = im2double(I);           % 转换数据类型为double
    [M,N] = size(I);            % 计算图像面积
    
    figure(1);              % 打开新窗口
    imshow(I);              % 显示原图像
    title('原图像');
    
    figure(2);              % 打开新窗口
    [H,x] = imhist(I, 64);      % 计算64个小区间的灰度直方图
    stem(x, (H/M/N), '.');      % 显示原图像的直方图
    title('原图像');
    
    % 增加对比度
    k = 2; b = -55;
    O = k .* I + b/255;              %这里是由于之前进行了double数据类型的
                                     %转换,导致数据均为(0,1)因此需要除以255
    figure(3);
    subplot(2,2,1);
    imshow(O);
    title('k = 2 b = -55 增加对比度');
    
    figure(4);
    subplot(2,2,1);
    [H,x] = imhist(O, 64);
    stem(x, (H/M/N), '.');
    title('k = 2 b = -55 增加对比度');
    
    % 减小对比度
    k = 0.5; b = -55;
    O = k .* I + b/255;
    
    figure(3);
    subplot(2,2,2);
    imshow(O);
    title('k = 0.5 b = -55 减小对比度');
    
    figure(4);
    subplot(2,2,2);
    [H,x] = imhist(O, 64);
    stem(x, (H/M/N), '.');
    title('k = 0.5 b = -55 减小对比度');
    
    % 线性增加亮度
    k = 1; b = 55;
    O = k .* I + b/255;
    
    figure(3);
    subplot(2,2,3);
    imshow(O);
    title('k = 1 b = 55 线性平移增加亮度');
    
    figure(4);
    subplot(2,2,3);
    [H,x] = imhist(O, 64);
    stem(x, (H/M/N), '.');
    title('k = 1 b = 55 线性平移增加亮度');
    
    % 反相显示
    k = -1; b = 255;
    O = k .* I + b/255;
    
    figure(3);
    subplot(2,2,4);
    imshow(O);
    title('k = -1 b = 255 反相显示');
    
    figure(4);
    subplot(2,2,4);
    [H,x] = imhist(O, 64);
    stem(x, (H/M/N), '.');
    title('k = -1 b = 255 反相显示');
    

    其运行结果如下,可以看到,原图像为


    原图像

    原图像的归一化灰度直方图为


    原图像的归一化灰度直方图

    分别进行线性变换


    线性变换结果 进行线性变换后的灰度直方图

    可以看出,改变对比度是对直方图的缩放与平移,改变亮度只是平移直方图在横轴上的位置,而反向则是将直方图水平镜像

    灰度对数变换

    对数变换的一般表达式如下,

    t=clog(1+s)
    

    其中,c为尺度比例常数,s为源灰度值,t为变换后的目标灰度值。

    y=log(x+1.5)

    由该函数曲线,我们可以看到,函数自变量在低值的时候,曲线斜率很高,自变量在高值的时候,曲线斜率很低,由此可以得知,在实际应用的时候,这样做可以用来增强一副图像较暗部分的细节。

    对数变换效果

    相关文章

      网友评论

          本文标题:图像的点运算2

          本文链接:https://www.haomeiwen.com/subject/uhwppftx.html