数字图像处理DIP之线性对比度展宽图像增强实践记录


叮嘟!这里是小啊呜的学习课程资料整理。好记性不如烂笔头,今天也是努力进步的一天。一起加油进阶吧!
在这里插入图片描述

一、关于图像增强之线性对比度展宽

对比度展宽的目的 : 通过将亮暗差异( 即对比度 ) 扩大 , 来把人所关心的部分强调出来
原理:进行像素点对点的、灰度级的线性影射 。 该影射关系通过调整参数来实现对亮暗差异的扩大

1、线性对比度展宽实现方法

设原图 、 处理后的结果图的灰度值分别为 [f(i,j)] 和[g(i,j)];
要求 [g(i,j)] 和 [f(i,j)] 均在 [0 , 255] 间变化 , 但是g的表现效果要优于f 。因为 f 和 g 的取值范围相同 , 所以通过 抑制 不重要的部分 , 来 扩展 所关心部分的对比度。

为了达到上面所提出的目的 原图 ( 横轴上的 f(i,j) )与处理后图 ( 纵轴上的 g(i,j) )的灰度影射关系可用下图表示 :
在这里插入图片描述
在这里插入图片描述

2、算法流程与MATLAB处理程序

• 设置参数
(例如:fa = 5;fb = 30; ga = 80;gb = 100;)
• 读入图像到矩阵F
• 得到F的行列数m,n,
• 初始化输出矩阵G
• 对于G的每一行i
• 对于G的每一列j
• 根据公式由F(i,j)计算G(i,j)

二、实践记录

1、代码实现

ContrastWidening.m文件

function G=ContrastWidening(ImPath,fa,fb,ga,gb)
x  = imread(ImPath);            %%% 图片读取 
[m,n,c] = size(x);
if(c>1)
    F=rgb2gray(x);
end
G=zeros(m,n);
k1 = ga/fa;                          
k2 = (gb-ga)/(fb-fa);             
k3 = (255-gb)/(255-fb);              
for i=1:m    
    for j=1:n
        if F(i,j)<fa
            G(i,j) = k1*F(i,j);
        elseif F(i,j)<fb
            G(i,j) = k2*(F(i,j)-fa)+ga;
        else
            G(i,j) = k3*(F(i,j)-fb)+gb;
        end
    end
end
G = uint8(G);
figure,imshow(x);
figure,imshow(G);
end

2、运行结果

调用编写好的函数:

 ContrastWidening(ImPath,fa,fb,ga,gb);
 
 小啊呜的调用实例:
 ContrastWidening('football.jpg',60,100,60,70);

在这里插入图片描述
现象如下:左为原图,右为处理后图片;
在这里插入图片描述
成功实现!
在这里插入图片描述
其中的函数参数fa,fb,ga,gb设置就需要多次实践取值得到更心仪的处理图片啦!

三、线性对比度展宽—— 灰级窗

当 256 个灰度级所表示的亮暗范围内的信息量太大 , 没办法很好地表述时 , 通过开窗的方式 每次只把窗内的灰度级展宽而把窗外的灰度级完全抑制掉

例如 : CT 图像的原始数据为 12bit ( 或是 16bit ), 要将其显示出来 , 则只能转换为 8bit , 于是有了 16 归并为1 1 ( 或 256 归并为1 1 ) 的需要 。 这时 , 开骨窗 、 肌肉窗 、 组织窗就可分别清晰地显示相应的内容 。

在这里插入图片描述
经过灰级窗处理后,将原图中灰度值分布在范围内的像素值映射到范围内,使对比度展宽获得更清晰图像。灰级窗算法只显示指定灰度级范围内的信息,并充分增强其对比度,从而抑制非重要的信息。
• 灰级窗映射计算公式表示如下:
在这里插入图片描述

Ending!
更多课程知识学习记录随后再来吧!

就酱,嘎啦!

在这里插入图片描述

注:
1、我们愈是学习,愈觉得自己的贫乏。 —— 雪莱
2、注意:MATLAB自带的图片在“Matlab\R2010b\toolbox\images\imdemos”这个文件夹中。这个文件夹中有很多尺寸合适的图片,也有很多类型,调用时很方便。

发布了72 篇原创文章 · 获赞 106 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_43543789/article/details/105122734