图像处理的各种方法文档格式.docx
《图像处理的各种方法文档格式.docx》由会员分享,可在线阅读,更多相关《图像处理的各种方法文档格式.docx(18页珍藏版)》请在冰点文库上搜索。
![图像处理的各种方法文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/61491b19-b2f8-47b8-8077-916111b27645/61491b19-b2f8-47b8-8077-916111b276451.gif)
同时,工具箱内的函数源程序也是开放性的,多为M文件,
用户可以查看这些文件的代码并进行更改,MALAB支持用户对
其函数进行二次开发,用户的应用程序也可以作为新的函数添
加到相应的工具箱中。
MATLAB中的数字图像是以矩阵形式表
示的,这意味着MATLAB强大的矩阵运算能力用于图像处理非
常有利,矩阵运算的语法对MATLAB中的数字图像同样适用。
本文对MATLAB图像处理工具箱进行探索及应用,实验证明该
软件功能强大,语言简洁易学,人机界面友好,工具箱具有丰富
的技术支持并集成了该领域专家的智慧,应用简单而效果良好。
2MATLAB实现图像处理过程
图像处理工具包是由一系列支持图像处理操作的函数组成的。
所支持的图像处理操作有:
图像的几何操作、邻域和区域操作、图像变换、图像恢复与增强、线性滤波和滤波器设计、变换(DCT变换等)、图像分析和统计、二值图像操作等。
MATLAB图像处理工具箱支持四种图像类型,分别为真彩色图像、索引色图像、灰度图像、二值图像,由于有的函数对图像类型有限制,这四种类型可以用工具箱的类型转换函数相互转换。
MATLAB可操作的图像文件包括BMP,HDF,JPEG,PCX,TIFF,XWD等格式。
下面就基于MATLAB实现图像处理的过程。
2.1图像处理基本操作
图像的读写与显示操作:
用imread()读取图像,imwrite()输出图像,把图像显示于屏幕有imshow(),image()等函数。
imcrop()对图像进行裁剪,图像的插值缩放可用imresize()函数实现,旋转用imrotate()实现。
2.2图像基本预处理
图像的基本预处理功能包括:
灰度变换,图像取反,直方图的统计,灰度图像的二值化处理。
2.2.1灰度变换
灰度图是含只含亮度信息,不包含色彩信息的图像。
灰度化处理是把含有亮度和色彩的彩色图像变换成灰度图像的过程。
MATLAB代码所示:
A=imread('
shengdanlaoren.jpg'
);
B=rgb2gray(A);
figure,
imshow(B)
图像处理图示(如图2-1和图2-2)
图2-1原图图2-2灰度变换所得图像
图像取反
对图像求反是将原来的灰度值翻转,简单的说就是使黑变白,使白变黑。
普通的黑白底片和照片就是这样的关系。
具体的变换就是将图像中每个像素的灰度值根据变换曲线进行映射。
X1=rgb2gray(A);
f1=200;
g1=256;
k=g1/f1;
[m,n]=size(X1);
X2=double(X1);
fori=1:
m
forj=1:
n
f=X2(i,j);
g(i,j)=0;
if(f>
=0)&
(f<
=f1)
g(i,j)=g1-k*f;
else
end
end
figure,imshow(mat2gray(g))
图像处理图如图2-3所示:
图2-3图像求反后
直方图的统计
图像直方图是图像各灰度值统计特性与图像灰度值的函数,它统计一幅图像中各个灰度级出现的次数或概率;
从图形上来说,它是一个二维图,横坐标表示图像中各个像素点的灰度级,纵坐标为各个灰度级上图像各个像素点出现的次数或概率。
在本系统中,先用rgb2gray这个函数实现把真彩图转换为灰度图,再用imhist函数用于显示灰度图像的N级直方图,灰度图默认N为256(对二值图默认为2)。
再对直方图上的灰度级进行统计。
I=imread('
B=rgb2gray(I);
imhist(B)
图像处理图如图2-4和2-5所示:
图2-4灰度图像图2-5统计直方图
灰度图像的二值化处理
图象二值化是指根据给定阈值T,将整幅图象中大于或等于T的象素点灰度值赋为1,小于T的象素点灰度值赋为0,从而得到仅有0和1两个灰度值的黑白图象。
灰度图象二值化的数学形式如下:
figure
subplot(2,2,1)
imshow(A);
%title('
原图像'
)
B=im2bw(A,91/255);
subplot(2,2,2),
imshow(B);
阀值为91的图像'
C=im2bw(A,71/255);
subplot(2,2,3),
imshow(C);
阀值为71的图像'
D=im2bw(A,140/255);
subplot(2,2,4),
imshow(D);
阀值为140的图像'
图像处理图如图2-6至2-9所示:
图2-6原图像图2-7阀值为91的图像
图2-8阀值为71的图像图2-9阀值为140的图像
2.3图像的增强
图像增强是一类基本的图像处理技术,其目的是对图像进行加工,以得到对具体应用来说视觉效果更好、更有用的图像。
目前常用的增强技术根据其处理所进行的空间不同,可分为基于图像域的方法和基于变化域的方法。
第一类,直接在图像所在的空间进行处理,也就是在像素组成的空间里直接对像素进行操作;
第二类,在图像的变化域对图像进行间接处理。
空域增强方法可表示为:
g(x,y)=EH[f(x,y)]
其中f(x,y)和g(x,y)分别为增强前后的图像,EH代表增强操作。
空域变换增强
增强对比度实际是增强原图像的各部分的反差。
实际中往往是通过原图中某两个灰度值之间的动态范围来实现的(如图2-10)。
图2-10增强对比度
在图2-10中可以看出,通过变换可以使原图的较高的和较低的灰度值的动态范围减小了,而原图在二者之间的动态范围增加了,从而其范围的对比度增加了。
A=rgb2gray(I);
colormap;
%%设置获取目的的图
j=imadjust(A,[01],[10],1.5);
%%对比度调整
figure;
subimage(j)
图像处理图示(如图2-11和图2-12)
图2-11原图图2-12增强对比度所得图像
空域滤波增强
一般情况下,像素的邻域比该像素要大,也就是说这个像素的邻域中除了本身以外还包括其他像素。
在这种情况下,g(x,y)在(x,y)位置处的值不仅取决于f(x,y)在以(x,y)为中心的邻域内所有的像素的值。
如仍以s和t分别表示f(x,y)在(x,y)位置处的灰度值,并以n(s)代表f(x,y)在(x,y)邻域内像素的灰度值,则t=EA[s,n(s)]
为在邻域内实现增强操作,常可利用模板与图像进行卷积。
每个模板实际上是一个二维数组,其中各个元素的取值定了模板的功能,这种模板操作也称为空域滤波。
空域滤波可分为线形滤波和非线形滤波两类。
线形滤波器的设计常基于对傅立叶变换的分析,非线形空域滤波器则一般直接对邻域进行操作。
下面分别介绍在MATLAB中如何应用线性平滑和线性锐化滤波器。
(1)线性平滑滤波器
线性低通滤波器是最常用的线性平滑滤波器。
这种滤波器的所有系数都是正的。
对3*3的模板来说,最简单的操作是取所有系数都为1。
为保证输出图像仍在原来的灰度范围内,在计算R后要将其除以9再进行赋值。
这种方法称为邻域平均法。
MATLAB实现均值过滤器的代码所示:
saturn.tif'
J=imnoise(I,'
salt&
pepper'
0.02);
imshow(I)
figure,imshow(J)
K1=filter2(fspecial('
average'
3),J)/255;
figure,imshow(K1)
title('
3*3的均值滤波器'
原图像,加入椒盐噪声的图像和均值滤波的图像分别如图2-13、图2-14和图2-15所示。
图2-13原图图2-14加入椒盐噪声图像
图2-153*3的均值滤波器处理结果
(2)线性锐化滤波器
线性高通滤波器是最常用的线性锐化滤波器。
这种滤波器的中心系数都是正的,而周围的系数都是负的。
对3*3的模板来说,典型的系数取值是:
[-1–1–1;
-18–1;
-1–1-1]
事实上这是拉普拉斯算子,所有的系数之和为0。
当这样的模板放在图像中灰度值是常数或变化很小的区域时,其输出为0或很小。
这个滤波器将原来的图像中的零频域分量去除了,也就是将输出的图像的平均值变为0,这样就会有一部分像素的灰度值小于0。
在图像处理中我们一般只考虑正的灰度值,所以还有将输出图像的灰度值范围通过尺度变回到所要求的范围。
m=fspecial('
laplacian'
I1=filter2(m,B)
h=fspecial('
unsharp'
0.5);
I2=filter2(h,B)/255;
subplot(1,2,1);
imshow(I1);
高通滤波laplacian算子'
subplot(1,2,2);
imshow(I2);
高通滤波unsharp'
)处理结果如图2-16所示:
图2-16空域高通滤波
频域增强
卷积理论是频域技术的基础。
设函数f(x,y)与线性位不变算子h(x,y)的卷积结果是g(x,y),即g(x,y)=h(x,y)*f(x,y)
那么根据卷积定理在频域有:
G(x,y)=H(u,v)F(u,v)
其中G(x,y)、H(u,v)、F(u,v)分别是g(x,y)、h(x,y)、f(x,y)的傅立叶变换。
频域增强的主要步骤是:
(1)技术所需增强图的傅立叶变换;
(2)将其与一个(根据需要设计的)转移函数相乘;
(3)再将结果进行傅立叶反变换以得到增强的图。
频域增强的两个关键步骤:
(1)将图像从空域转换到频域所需的变换及将图像从频域空间转换回空域所需的变换;
(2)在频域空间对图像进行增强加工操作。
常用的频域增强方法有低通滤波和高通滤波。
以下分别介绍在MATLAB中如何实现。
(一)低通滤波
图像的能量大部分集中在幅度谱的低频和中频度,而图像的边缘和噪声对应于高频部分。
因此能降低高频成分幅度的滤波器就能减弱噪声的影响。
Butterworth低通滤波器是一种物理上可以实现的低通滤波器,n阶,截断频率为d0的Butterworth低通滤波器的转移函数为:
H(u,v)=
用MATLAB实现Butterworth低通滤波器的代码所示:
clc;
clearall;
figure,imshow(A)
I2=imnoise(A,'
salt'
figure,imshow(I2)
f=double(I2);
g=fft2(f);
g=fftshift(g);
[N1,N2]=size(g);
n=2;
d0=50;
n1=fix(N1/2);
n2=fix(N2/2);
N1
N2
d=sqrt((i-n1)^2+(j-n2)^2);
h=1/(1+0.414*(d/d0)^(2*n));
result(i,j)=h*g(i,j);
result=ifftshift(result);
X2=ifft2(result);
X3=uint8(real(X2));
figure,imshow(X3)
原图和处理结果如图2-17和图2-18所示
图2-17加噪图2-18去噪
(二)高通滤波
高通滤波也称高频滤波器,它的频值在0频率处单位为1,随着频率的增长,传递函数的值逐渐增加;
当频率增加到一定值之后传递函数的值通常又回到0值或者降低到某个大于1的值。
在前一种情况下,高频增强滤波器实际上是依照能够带通滤波器,只不过规定0频率处的增益为单位1。
实际应用中,为了减少图像中面积大且缓慢变化的成分的对比度,有时让0频率处的增益小于单位1更合适。
如果传递函数通过原点,则可以称为laplacian滤波器。
n阶截断频率为d0的Butterworth高通滤波器的转移函数为:
MATLAB实现Butterworth高通滤波器代码所示:
I1=rgb2gray(I);
figure,imshow(I1)
f=double(I1);
d0=5;
ifd==0
h=0;
h=1/(1+(d0/d)^(2*n));
原图和处理结果如图2-19和2-20所示。
图2-19原图图2-20高通滤波
3总结
本文主要介绍了数字图像的理论知识及MATLAB语言的特点,基于MATLAB的数字图像处理环境,介绍了如何利用MATLAB及其图像处理工具箱进行数字图像处理,主要论述了图像增强及二值图像的原理,并利用MATLAB来实现图像增强、二值图像分析等图像处理。