系列文章
·【基于MATLAB的数字图像处理】第二章·视觉系统与图像处理系统
·【基于MATLAB的数字图像处理】第四章·图像增强
·【基于MATLAB的数字图像处理】大作业·综合图像处理平台
目录
图像增强是指采用一系列技术,对原图像进行处理、加工,使其更适合具体的应用要求,改善图像的视觉效果,将图像转换成一种更加适合于人和机器进行分析处理的形式。
图像增强不是以图像保真为原则,而是 以需要为原则,增强图像中需要的信息,去除或削弱一些不需要的信息,分为空域增强和变换域增强,变换域增强主要是频域增强。
- 空域增强:直接对图像的像素灰度值进行操作。包括图像的灰度变换、直方图修正、图像空域平滑和锐化处理等。
- 频域增强:在图像的变换域中,对图像的变换值进行操作,然后经逆变换获得所需的增强结果,常用的方法包括低通滤波、高通滤波以及同态滤波等。
一、空域图像增强技术
空域增强的通式是:
代表增强操作点操作:
定义在每个(x,y)点上,输出图像的每个像素的灰度值仅由相应输入像素决定,如灰度映射方法。模板操作:
定义在点的邻域上,通常是使用一个模板滑过整幅图像产生新的像素,输出像素的灰度值由对应输入像素的一个邻域内的几个像素的灰度值共同决定,如图像平滑和图像锐化。1.灰度直方图
灰度直方图:灰度直方图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数:其横坐标是灰度级,纵坐标是该灰度出现的频率(像素的个数,或个数与总数之比)
直方图的性质:
- 不表示图像的空间信息:直方图只反应图像灰度分布的特性,和灰度所在的位置无关,将同一副图像中的像素位置改变时,图像的视觉效果会改变,但是灰度直方图并不会发生变化
- 直方图反映了图像整体灰度分布的情况:较暗的图像,直方图的组成主要集中在灰度级低的一边;较亮的图像,直方图倾向于灰度级高的一侧。
- 直方图有叠加性:如果一图像由两个不连接的区域组成,并且每个区域的直方图已知,则整幅图像的直方图是该两个区域的直方图之和
直方图的用途:
- 判断量化是否恰当:一幅高质量的数字图像应该利用全部或几乎全部可能的灰度级
- 判断图像明暗:通过直方图的性质2可以判断图像整体效果的明暗
- 判断图像对比度:在直方图中强对比度的图像灰度分布比较分散,而弱对比度的图像分布比较集中
- 边界阈值选择:对于双峰直方图(一幅图背景是浅色的,其中有一个深色的物体),可以将阈值选定在两峰之间的谷处,用来提取前景物体的边界
例程:
%% 显示Lena女士灰度图的直方图
clear;clc;
I=imread("Lena.tif");
I=im2double(I);
subplot(121);imshow(I);
subplot(122);imhist(I);
效果:
2.直方图修正技术
a.直方图均衡化
直方图均衡化主要是用于增强动态范围偏小的图像的反差,将原图像的直方图变为均匀分布,增加像素值的动态范围,增加图像整体的对比度效果。以 累计分布函数变换法为基础。
图像均衡化的步骤如下:
- 统计给定图像中各灰度级像素个数
- 计算图像中每个灰度级的像素出现概率
- 计算累计直方图
- 取整
- 确定映射对应关系 k->
- 对图像进行增强变换(k->)
例程:
%% 直方图均衡化
N=histeq(M); %直方图均衡化
figure;
subplot(221);imshow(M);title("原图像");
subplot(222);imhist(M);title("原图像直方图");
subplot(223);imshow(N);title("均衡化后图像");
subplot(224);imhist(N);title("均衡化后直方图");
效果:
直方图均衡化由于它的变换函数采用的是累积分布函数,因此只能产生近似均匀的直方图,这样就限制它的效能,也就是说,在不同的情况下,并不总是需要具有均匀直方图的图像。
另外它的增强效果不易控制,处理的结果总是得到全局均衡化的直方图,有时需要变换具有特定的直方图的图像,以便能对图像中某种灰度级加以增强,即有选择性的增强某个灰度值范围内的对比度,这时就要用到直方图规定化。
b.直方图规定化
直方图规定化是修改一幅图像的直方图,使它与另一幅图像的直方图匹配或具有另一种预先规定的函数形状。
直方图规定化步骤:
- 对原始直方图进行灰度均衡化
- 规定需要的直方图,计算能使规定直方图均衡化的变换
- 将原始直方图对应映射到规定直方图
第三步中采用的映射规则十分重要,一种为单映射方法,是从原始累积直方图向规定直方图映射,但有时存在较大的取整误差;另一种是组映射方法,是从规定直方图向原始累积直方图映射,映射误差较小。
例程:
%% 直方图规定化
hgram=50:1:250; %直方图规定化的指定向量
G=histeq(M,hgram); %直方图规定化
subplot(325);imshow(G);title("规定化后图像");
subplot(326);imhist(G,64);title("规定化后直方图");
效果:
3.图像灰度映射
灰度映射:根据某种灰度映射规则(变换函数),将原始图像中每个像素的灰度值转化为另一灰度。
灰度映射是一种点操作, 关键在于合理的设计映射函数,赋予各个点新的灰度值,以使图像产生新的视觉效果
a.线性灰度映射
线性灰度映射是最简单的一种映射方法:
根据系数a、b不同的取值,可以对图像进行不同的操作:
- 若a=0,b=0,图像灰度值不发生变化
- 若a=1,b≠0,图像灰度值上移或下移,图像整体变量或变暗
- 若0
其中非常常用的是图像 取反操作,当黑色面积占据整幅图像的主导地位时,经常使用取反操作,将图像的内容显示的更明显。
例程:
%% 线性灰度映射操作
a=input('请输入线性灰度映射系数a:');
b=input('请输入线性灰度映射系数b:');
J=I*a+b;
figure;
subplot(221);imshow(I);title("原图");
subplot(222);imhist(I);title("原图的直方图");
subplot(223);imshow(J);title("变换后的图像");
subplot(224);imhist(J);title("变换后的直方图");
效果:
b.分段线性灰度映射
分段线性灰度映射主要功能是用来增强图像的对比度,通过将图像的值域分成多个值域并进行不同的线性变换,可以根据自己的需要,对某一段进行压缩或扩展。
比如这个图,第一段是将原来灰度值为94的点,压缩为26,第二段将原来灰度值为226的点压缩为154,实现了分段压缩;常用的方式是将接近于黑色(灰度值接近于0)的部分压缩为黑色,接近于白色(灰度值接近于255)的部分扩展为白色,以增强图像的对比度。
例程:
%% 分段线性灰度映射操作
M=imadjust(I,[0.3,0.7],[0,1],1);
figure;
subplot(221);imshow(I);title("原图");
subplot(222);imhist(I);title("原图的直方图");
subplot(223);imshow(M);title("变换后的图像");
subplot(224);imhist(M);title("变换后的直方图");
效果:
c.非线性灰度映射
非线性灰度映射最常用的映射函数就是对数函数,它的目的是对原图进行灰度压缩,将原来动态范围很大的图像压缩到显示器设备允许的动态范围。
对数变换的公式为:t=Clog(1+|s|)
C:尺度比例系数,用于调节动态范围
在程序中,可以通过改变imadjust函数中最后一项gamma变量调节曲线形状,gamma>1时映射偏重于更低数值(灰暗)输出,形状为下凸;gamma
Original: https://blog.csdn.net/qq_52785580/article/details/123494766
Author: K.Fire浑身是肝
Title: 【基于MATLAB的数字图像处理】第四章·图像增强
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/631822/
转载文章受原作者版权保护。转载请注明原作者出处!