图像处理复习整理(1.数字空间域加强)
只有期末考试那一段时间,才敢说自己真正的学了这门课
图像增强(图像增强是指按特定的需要突出一幅图像中的某些信息,同时削弱或去除某些不需要的信息的处理方法。其主要目的是使处理后的图像对某种特定的应用来说比原始图像更适用。处理的结果使图像更适合于人的视觉特性。由于缺少客观质量测量标准,所以图像增强并不存在通用理论。)
空间域:
灰度变化方法:
线性灰度变换
非线性灰度变化经典的方式有:
对数变换:
幂律变换:
幂律变换matlab代码:
clear all x=double(imread('3.png')); figure, imshow(x/255); H=x/255; % y=log(1+x)*255; n=1/2; c=1; y=255*c*H.^n; figure, imshow(y/255);
分段线性变换:
最简单的分段线性变换之一是对比度拉伸变换(constrast stretching), 用于扩展灰度级范围。
刚开始看博客居然没看懂,最后发现原来就是设置最小灰度值,最大灰度值,把图片之中小于最小灰度值的像素点都设为最小灰度值,大于最大灰度值的像素点都设置为最大灰度值。这样刚开始觉得无聊,但是压缩了图像的灰度区间。虽然觉得没啥用,但是提出来了就提出来了
这是matlab官方的参考代码:
I = imread('pout.tif'); J = imadjust(I,[0.3;0.7],[]) imshow(I), figure, imshow(J)
直方图均衡化
全局方式
matlab有imhist看一个图像的灰度直方图分布,但是自己实现的话就是:不过说实话,确实丑
I=double(rgb2gray(imread('1.png'))); M=reshape(I,1,size(I,1)*size(I,2)); hist(M,256)
如果直方图灰度值低的集中,表明曝光不充分,灰度值在高位集中表明曝光过分,最好的就是使得图片的灰度值能够在成均匀分布。
图片是离散的像素点,所以说r是从0-255的灰度值,pr(r)就是像素点在图片中出现的频数/图片像素点数目。
所以说图像的均质化的数学形式是:
x=double(rgb2gray(imread('1.png'))); [M,N]=size(x); figure,imshow(x/255,[]) for i=1:256 h(i)=sum(sum(x==i-1)); end y=x; s=sum(h); for i=1:256 I=find(x==i-1); y(I)=255*sum(h(1:i))/s; end figure,imshow(y/255,[])
局部直方图均值化:
自适应直方图均衡化方法(AHE):
直方图均衡化是整体的均衡化,但是这样在很大程度上是忽略了必要的细节的,这个就设置了阈值,从而对图像细节进行保留
matlab官方参考代码:
% Demo I = imread('tire.tif'); J = histeq(I); A = adapthisteq(I,‘clipLimit’,0.02,'Distribution','rayleigh'); figure, imshow(I); figure, imshow(J); figure, imshow(A);
卷积方式:
作为没有学信号处理的孩纸,理解卷积可以参考赞最多的那个,知乎
一维卷积,例题是以化简的方式写的,所以刚开始看看不懂意义,是正常的,但是,一定要在之后对其进行理解。
卷积要定义是0边界、反射边界还是循环边界
0边界会生成Toeplitz矩阵,张这样:
循环边界会生成这样的矩阵:
又因为循环边界矩阵能进行奇异值(SVD)分解,能够减小计算度,所以说,很多时候会选择使用循环边界,随着计算机的性能的提高,以后一般都会选择更加好的边界,而计算度的权重会相应地减小。
二维卷积,看公式太过于麻烦,所以说我直接上图,简单明了。就是一个一个套,最终套出滤波处理后的图像。
0边界会有block Toeplitz Toeplitz block 矩阵
周期边界会生成block Circulant Circulant block 矩阵
有了滤波,接下来就是对图像的处理了:
对图像进行光滑处理的算子:
点操作,邻域操作
点操作,即只考虑那个像素点的信息,通过现有的像素点的灰度值,再使用函数得出转换后的该像素点所有的灰度值。(灰度变换应该算是)
邻域操作,由于图像由于是表示的是一个事务的征途,所以像素点灰度值存在连贯性,所以可以通过某一像素点的领域像素点的灰度值,得出该点应有的灰度值(卷积滤波)
空间滤波器:由一个领域及其对该领域包围的图像像素执行的预定操作组成。我们称其为滤波器(filter)、 掩模(mask)、核(kernel)、模板(template)或窗口(window)。
平滑算子用于模糊处理和降低噪声,去掉图像之中的细节,使得图像之中的细节能够连接在一起。领域算子进行统计的时候也一样会把本身给算进去
邻域平均算子:
用周边的灰度值代替该点的灰度值
统计排序算子:
基于领域中像素灰度值的排序,由排序结果决定代替中心像素的值
对图像进行锐化的算子
锐化是使图像的边缘得到加强的处理,使图像能够更好地被人眼识别
Taylor公式:
在离散的图像之中x-x0就是表示的是步长:
当n=1时,直接可以使用,前向差分公式或后向差分公式。
当n=2时,x=x0+1,x=x0-1得出两点中心差分公式。
由于图像是二维的,我们假设x方向,y方向都是相互独立的,于是在这个点fxy=fyx与积分顺序无关。所以该点的像素的梯度大小,等于fxy的模。而模的近似大小为:
直接差分算子:
Roberts算子:
交叉算子能用的原因,是因为我们假设x,y是线性不相关的,所以旋转x,y坐标系,得到的两个方向的梯度任然是互不线性相关的。
Prewitt算子:
Sobel算子:
当n=3时,x=x0+1,x=x0-1得出二阶两点中心差分公式。
拉普拉斯算子
反锐化掩模:
找出图像的高通像素点,然后在原图像的基础之上,加上高通图像信号,从而对图像进行锐化处理