基于各向异性扩散的数字图像处理 作业
- 格式:doc
- 大小:279.50 KB
- 文档页数:7
1、下图是一用于干涉原理进行测试的干涉场图像,要求判读条纹的间距,请给出图像处理的方案并说明每一步的作用及其对其它处理步骤可能产生的影响。
解:步骤与思路:○1.进行模糊处理,消除噪声○2.边缘检测,进行图像增强处理○3.二值化图像,再进行边缘检测,能够得到很清晰的边界。
○4.采用横向标号法,根据值为1像素在标号中的相邻位置可以确定间距I=imread('xz mjt.bmp');I1=medfilt2(I); %对图像中值滤波imshow(I1);[m,n]=size(I1);for i=1:mfor j=1:nif(I1(i,j)<100) %阈值为100I1(i,j)=255;elseI1(i,j)=0; %进行二值化endendendfigure;imshow(I1);Y1=zeros(1,25);y2=y1;c=y2;i=100;for j=1:1200if (I1(i,j)==255&&I1(i,j+1)==0)Y1=j+1;endif (I1(i,j)==0&&I1(i,j+1)==255)Y2=j;endendfor i=1:25c=Y2(i)-Y1(i)endc %找出每两个条纹之间的距离2. 现有8个待编码的符号m0,……,m7,它们的概率分别为0.11,0.02,0.08,0.04,0.39,0.05,0.06,0.25,利用哈夫曼编码求出这一组符号的编码并画出哈夫曼树。
3. 请以图像分割方法为主题,结合具体处理实例,采用期刊论文格式,撰写一篇小论文。
各种算子对图像进行边缘检测效果的研究图像分割是根据需要将图像划分为有意义的若干区域或部分的图像处理技术。
通过边缘检测在Matlab 中实现方法,及用四叉数分解函数进行区域分割的方法,掌握了Matlab 区域操作函数的使用和图像分析和理解的基本方法,并学到了'roberts','sobel','prewitt','canny','log'算子对图像进行边缘检测的不同效果。
数字图像处理与分析实验作业作业说明:作业题目分为基本题和综合应用题。
基本题主要是考察大家对教材涉及的一些基本图像处理技术的理解和实现。
而综合应用题主要是考察大家综合利用图像处理的若干技术来解决实际问题的能力。
注:所有实验用图像均可从网上下载,文档中的图片只是示例。
作业要求:编程工具:Matlab或者VC(可以使用OpenCV:/)。
因为很多基本的图象处理算法已经集成在很多的编程工具中,而编程训练中基本题的目的是让同学们加深对这些算法的理解,所以基本题要求同学们只能使用图像读取和显示相关的函数(例如Matlab的imread imshow,imwrite,OpenCV的cvCreateImage,cvLoadImage,cvShowImage),而不要直接调用相关的API(例如二维DFT,图象均衡等等),但在综合应用题中则无此限制。
上交的作业包括:实验报告和程序。
其中实验报告要求写出算法分析(必要时请附上流程图),函数说明(给出主要函数的接口和参数说明),实验结果(附图)及讨论分析。
提交的程序,一定要确保可以运行,最好能写个程序说明。
基本题一共有10道,可以从中任选2道题来完成。
综合应用题有2道,可以从中任选1道来完成。
请各位同学务必独立完成,切忌抄袭!基本题一、直方图变换要求对原始Lena 图像实现以下三种取整函数的直方图均衡化:线性函数: t k= int[(L -1) t k+ 0.5];对数函数: t k= int[( L-1)log(1+9t k) + 0.5] ;指数函数: t k= int[(L -1)exp( t k-1) + 0.5] ;要求给出:1、原始图像和分别采用上述三种方式均衡化后的图像;2、原始图像的直方图和上述三种方式对应均衡化后的直方图。
二、模板运算2.1 加权平均按照教材图3.3.2 所示的模板对含噪声的Lena_noise 图像进行平滑滤波。
要求给出:1、原始图像和平滑后图像;2、计算平滑后的均方根误差(e rms)和峰值信噪比(PSNR )。
实验一读取一幅图像,完成如下操作,并存储变换后的图像(1)把图像翻转90度,并显示(2)缩小图像为原图像的1/2(3)镜像图像原图像:clc;clf;clear;f=imread('D:\matlab\picture.jpg'); %读取D盘中matlab文件夹中名字为picture的格式为jpg的图片figure,imshow(f)k=imrotate(f,90); %正数表示逆时针旋转,负数表示顺时针旋转figure,imshow(k)imwrite(k,'D:\matlab\k.jpg'); %保存逆时针旋转90度后的图像逆时针旋转90度后图像:x=0.5; %横向放2倍。
如果想缩2倍就把x改为0.5即可,即变为0.5倍y=0.5; %纵向放2倍。
如果想缩2倍就把y改为0.5即可,即变为0.5倍T1 = maketform('affine',[x 0 0; 0 1 0; 0 0 1]);T2 = maketform('affine',[1 0 0; 0 y 0; 0 0 1]);I1 = imtransform(k,T1);I2 = imtransform(I1,T2);figure, imshow(I2)imwrite(I2,'D:\matlab\I2.jpg'); %保存缩小为原来1/2的图像缩小图像为原图像的1/2img=rgb2gray(I2) %取图像I2的灰度图像subplot(1,2,1),imshow(img); %水平镜像[m,n]=size(img);p=1:m;q=1:n;z(p,n-q+1)=img(p,q);subplot(1,2,2),imshow(z);imwrite(z,'D:\matlab\z.jpg'); %保存镜像后的图像镜像后的图像:实验二读取一幅彩色图像,并将图像转化为二值图像,在一张图表上,显示原始图像,灰度图像,二值图像。
数字图像处理—实验一源程序:a=imread('rice.png');figure,imshow(a),title('原图');axis on;a=double(a)/256;figure,imhist(a),title('原直方图');axis on;r=[0:0.001:1];s1=[r<0.35].*r*0.3+[r<=0.65].*[r>=0.35].*(0.105+2.6333*(r-0.35))+[r>0.65].*( 1+0.3*(r-1));s2=[r<=0.5].*(r.^5)*15.9744+[r>0.5].*((r-0.5).^0.2+0.12);a1=[a<0.35].*a*0.3+[a<=0.65].*[a>=0.35].*(0.105+2.6333*(a-0.35))+[a>0.65].* (1+0.3*(a-1));a2=[a<=0.5].*(a.^5)*15.9744+[a>0.5].*((a-0.5).^0.2+0.12);figure,imshow(a1),title('改后一');axis on;figure,imhist(a1),title('改后直方图一');axis on;figure,plot(r,s1),title('变换函数一');axis on;figure,imshow(a2),title('改后二');axis on;figure,imhist(a2),title('改后直方图二');axis on;figure,plot(r,s2),title('变换函数二');axis on;imwrite(a1,'改后rice 一.jpg');imwrite(a2,'改后rice 二.jpg');b=imread('kids.tif');figure,imshow(b),title('原图');axis on;b=double(b)/256;figure,imhist(b);title('原直方图');axis on;s1=r.^0.6;s2=r.^0.4;s3=r.^0.3;b1=imadjust(b,[],[],0.6);b2=imadjust(b,[],[],0.4);b3=imadjust(b,[],[],0.3);figure,imshow(b1),title('改后一');axis on;figure,imhist(b1),title('改后直方图一');axis on;figure,plot(r,s1),title('变换函数一');axis on;figure,imshow(b2),title('改后二');axis on;figure,imhist(b2),title('改后直方图二');axis on;figure,plot(r,s2),title('变换函数二');axis on;figure,imshow(b3),title('改后三');axis on;figure,imhist(b3),title('改后直方图三');axis on;figure,plot(r,s3),title('变换函数三');axis on;imwrite(b1,'改后kids 一.jpg');imwrite(b2,'改后kids 二.jpg');imwrite(b3,'改后kids 三.jpg');c=imread('circuit.tif');figure,imshow(c),title('原图');axis on;c=double(c)/256;figure,imhist(c),title('原直方图');axis on;s=1-r;c=1-c;figure,imshow(c),title('变换后');axis on;figure,imhist(c),title('变换后直方图');axis on;figure,plot(r,s),title('变换函数');axis on;imwrite(c,'改后circuit.jpg');d=imread('rice.png');figure,imshow(d),title('原图');axis on;d=double(d)/256;figure,imhist(d),title('原直方图');axis on;r=[0:0.001:1];s=[r<=0.4].*[r>=0.2]*0.6;d=[d<=0.4].*[d>=0.2]*0.6+[d>0.4].*d+[d<0.2].*d;figure,imshow(d),title('变换后');axis on;figure,imhist(d),title('变换后直方图');axis on;figure,plot(r,s),title('变换函数');axis on;imwrite(d,'第二次改后rice.jpg');e=imread('Picture.jpg');e=e(:,:,1);e=im2double(e);figure,imshow(e),title('原图');axis on;figure,imhist(e),title('原直方图');axis on;r=[0:0.001:1];s=[r<0.3].*r*1.1+[r>0.65].*r*0.8+[r>=0.3].*[r<=0.65].*(0.11+r*1.5); e=[e<0.3].*e*1.1+[e>0.65].*e*0.8+[e>=0.3].*[e<=0.65].*(0.11+e*1.5); figure,imshow(e),title('变换后');axis on;figure,imhist(e),title('变换后直方图');axis on;figure,plot(r,s),title('变换函数');axis on;imwrite(e,'改后Picture.jpg');处理前后图像:结论:不同的灰度变换对最终图像的影响效果是不同的。
数字图像处理课程论文1 图像增强算法仿真及其分析摘要图像增强是一种通过有选择地强调图像中某些信息和抑制另外一些信息以改善图像视觉效果的技术图像增强算法主要包括空间域和变换域两种。
本文主要基于空间滤波器和频率滤波器对含有不同的噪声的图像进行滤波处理并利用细节方差和峰值信噪比两个客观指标对处理后的图像进行仿真通过对比分析得出不同滤波器的去噪性能。
关键词滤波图像增强细节方差峰值信噪比图像增强的主要目的是提高图像的质量根据目前的研究现状图像增强的方法大致分为两类一类是空域处理方法一类是频域的处理方法。
空域法是直接对图像的像素进行处理基本上是以灰度映射为基础的所用的映射变换取决于图像的特点和增强的目的频域法是在图像的某种变换域内对变换后的系数经过一定的规则进行运算接着反变换到原来的空域得到增强的图像。
本文主要介绍了ILPF、BLPF和GLPF三种频域滤波器以及中值、算术均值和几何均值滤波器的原理简要阐述了高斯噪声和椒盐噪声的模型并采用这两类滤波器对含有噪声的图像按峰值信噪比和DV-BV两个评价指标进仿真分析。
1空间域增强滤波空间域增强是指增强构成图像的像素。
空间域方法是直接对这些像素操作的过程。
空间域处理可由下式定义gxyTfxy 1-1 其中fxy是输入图像gxy是处理后的图像T是对f的一种操作其定义在xy的领域。
11中值滤波中值滤波器是最著名的滤波器其原理是利用像素的相邻像素的灰度中值来替代该像素值其一般表达式为fxy median gst st∈Sxy 1-2 33模板中值滤波中将中间的像素值102替换其领域内的像素值同理55模板也类似。
数字图像处理课程论文2 图1 33和55维的中值滤波原理图12算术均值滤波算术均值滤波器是最简单的滤波器Sxy 表示中心在点xy处尺寸为mn的矩形子窗口的坐标组。
算术均值滤波过程就是计算由Sxy定义的区域中被干扰图像gxy的平均值。
在任意点xy处复原图像f的值就是用Sxy 定义的区域的像素计算出来的算术均值。
专业文献综述题目: 数字图像处理技术及应用研究姓名:学院:专业:班级:学号:指导教师: 职称: 副教授2014 年05月25日南京农业大学教务处制数字图像处理技术及应用研究摘要:图像是人类认识客观世界和相互交流的媒体。
图像处理是信号处理在图像域的一个研究分支,是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。
目前大多数的图像是以数字形式存储,因而图像处理很多情况下指数字图像处理。
近十几年来,随着大规模集成电路技术和计算机技术的发展,以及各种业务需求的不断增长,数字图像处理技术已成为当前研究热点,其应用领域越来越广泛,显示出了巨大的发展潜力和广阔的应用前景。
本文结合多篇文献总结了近几年来数字图像处理主要技术及其在各领域的应用。
关键字:数字图像处理;偏微分方程;计算机应用Digital Image Processing Technology and Its Application (Nanjing Agricultural University, College of Information Science and Technology, Jiangsu Nanjing 210095)Abstract: Image is a media that human use to understand the world and communicate with each other . Image processing is a research branch of signal processing in the image domain,use image analysis, processing, and handling to meet the visual, psychological, and other technical requirements. Most of the images are stored in digital form, so in many cases image processing means digital image processing.Over the last decade, with the development of large scale integrated circuit technology, computer technology, and the growing variety needs of business, digital image processing technology has become a hotspot of current research, and its applications become more and more widely, showing a huge development potential and broad prospects. This paper summarizes the recent papers on digital image processing technology and its applications in various fields. Key words: Digital image processing;Partial differential equation;Computer Applications 引言:随着信息产业的逐渐发展以及与其他各个学科间不断结合的普及,图像识别技术已经能够深入地应用到具体目的物识别等领域中。
数字图像处理报告标题:01报告编号:课程编号:学生姓名:截止日期:上交日期:摘要(1)编写函数计算灰度图像的均方误差(MSE)、信噪比(SNR)、峰值信噪比(PSNR)、平均绝对误差(MAE);(2)编写函数对灰度图像经行降采样,直接消除像素以及消除像素前进行简单平滑滤波;(3)编写函数对图像进行放大,分别使用像素直接复制和双线性插值的方法:(4)编写函数用题目给出的量化步骤Q去量化灰度图像,并给出相应的MSE和直方图;(5)编写函数对灰度图像执行直方图均衡化,显示均衡前后的直方图。
同时,熟悉使用MATLAB,并且熟练操作对图像进行各种修改变换等。
KEY WORD :MATLAB MSE、PSNR 直方图量化技术探讨数字图像处理是基于Matlab来实现的,由于Matlab 独特的功能和对矩阵,图像,函数灵活的处理,因而用于图像的处理相当的方便。
task1均方误差(MSE),信噪比(SNR),峰值信噪比(PSNR),平均绝对误差(MAE)。
可以使用使用for循环语句,分别计算图像MSE/SNR/PSNR/MAE,具体的计算公式见附录代码,下面只附运算原理代码均方误差(MSE):sum=sum+(a(i,j)-b(i,j))^2; MSE=sum/(M*N)信噪比(SNR):sum2=sum2+a(i,j)^2; SNR=10*log10(sum2/MSE)峰值信噪比(PSNR):sum=sum+(a(i,j)-b(i,j))^2; PSNR=10*log10(255^2/MSE)平均绝对误差(MAE):sum=sum+a(i,j)+b(i,j); MAE=sum/(M*N)在每次对同一个图像处理时它们的均方误差(MSE),信噪比(SNR),峰值信噪比(PSNR),平均绝对误差(MAE)都会有所不同,因为它是原图像与加噪后的图像比较,而电脑的每次操作都会对加噪过得图像有影响。
task3按比例缩小灰度图像(1)直接消除像素点:I1=g(1:m:end,1:m:end);I1 为缩小后的图像,g为原图。
基于各向异性扩散的数字图像处理1 Perona-Malik 算法概述各向异性扩散作为现行的一种非常流行的偏微分方程数字图像处理技术,是由传统的 Gaussian 滤波发展而来的,有着强大的理论基础,并有着传统的数字图像方法无法企及的良好特性,其特点是可以在平滑的同时保持边缘特征。
由于这种优良的特性,使其在图像的平滑、去噪、恢复、增强和分割等方面得到了广泛的应用。
Koenderink 和 Witkin 两位学者把尺度空间的严格理论引入到了数字图像处理之中,而尺度空间理论正是现代偏微分方程数字图像处理的理论基础,他们的工作主要是将多尺度图像表示为 Gaussian 滤波器处理的结果,相当于将原图像输入热传导方程进而得到的序列时间图像。
多尺度滤波得到的图像序列,可以看作各向同性热扩散方程的解,这就是用扩散方程的观点来看待高斯滤波:()yy xx u u c t u-=∂∂ (1.1)不仅是热扩散方程可以产生尺度空间,其他的抛物线方程也可以产生尺度空间,进而满足极大值原理的演化方程也能定义一类尺度空间。
各向异性扩散方程的提出是这个领域中一个里程碑式的标志,它开辟了数字图像处理中偏微分方程理论和应用的一个新领域,提出了各向异性扩散(Anisotropic Diffusion )方程,一般称为 Perona-Malik (简称 P-M )扩散模型。
))((u u g div t u∇∇=∂∂(1.2) 其中div 是散度算子,u ∇是图像的梯度,)(u g ∇是扩散系数。
各向异性扩散是一个能量散发的过程,这个过程与能量曲面的形状有关,从数学上来看,其等价于一个能量最小化问题的求解。
从数学意义上讲Perona-Malik 模型是改进的热传导偏微分方程。
它是通过函数(,,)c x y t 自适应地控制扩散速度。
理论上希望边缘内部的区域,c 远离0,图像可以平滑,而在边缘附近,0c ≈,图像不再平滑。
铃铛形的径向函数g(w)可取21()exp[()]u Kg u ∇∇=- (1.3)或者211(),01()u Kg u αα∇+∇=>+ (1.4)当(,,)()c x y t g u =∇时形成了各向异性的扩散模型:()·)()()?ug u u g u u g u u t∂=∇∇∇=∇∆+∇∇∇∂ (1.5) 可以利用Taylor 级数展开进行线性近似(,,)(,,0)(,,0)((,,))uu x y t u x y t u x y t c x y t u t∂=+∆=+∆∇⋅∇∂ (1.6)由于()··c u c u c u ∇∇=∇∇+∆ (1.7) 所以可以得出P-K 模型简化推导:0(,,)(,,0)()(,,0)((,,0))t uu x y t u x y t u x y t c x y u t δδδ=∂≈+=+∇⋅∇∂ (1.8)这样把较长的时间t 分割为 t n t δ=⋅,始终从n t 步计算到1n t +步即可112(,,)(,,)((,,)(,,))(,,)[(,,)(,,)(,,)(,,)](,,)[]n n n n n n n n n n nn u x y t u x y t t c x y t u x y t u x y t t c x y t u x y t c x y t u x y t u x y t t I I δδδ+≈+∇⋅∇=+∇∇+∆=++ (1.9)把(,,)n u x y t 改写为,n i j u ,(,,)n c x y t 改写为,n i j c ,其中11,.1,,,1.,1,, 1.,1,,.1,,11[()()()()2()()()()]n n n n n n n n n i j i j i j i j i j i j i j i j n n n n n n n n i j i j i j i j i j i j i j i j I c c u u c c u u c c u u c c u u ++++----=--+--+--+-- (1.10) 2,1,1,,1,1,1[4]2nn n n n n n i j i j i j i j i j i j I c u u u u u +-+-=+++-(1.11)则121,,,1,1,,,1,1[]2n nnn n n n n n n i j S i j i j E i j i j N i j i j W i j I I c u c u c u c u ++--+=∇+∇+∇+∇ (1.12) 其中,1,,,,1,,1,,,,1,n n n S i j i j i jn n n E i j i j i j n n n N i ji ji jn n n W i j i j i ju u u u u u u uuu u u ++--∇=-∇=-∇=-∇=- (1.13)则得到Perona-Malik 算法的下述迭代形式1,,1,,,1,1,,,1,[]n nnnnnnnnni j i j i j S i j i i E i j i j N i j i j W i j u u c u c u c u c u λ+++--=+∇+∇+∇+∇ (1.14)其中,2tδλ=以Perona-Malik 算法为代表的各向异性扩散滤波模型既能有效地去除噪声,又能较好地保持图像的边缘和重要的细节信息。
但是考虑到PM 模型对小尺度噪声敏感以及部分边缘和细节失真问题的存在,对模型的扩散系数的改进仍然需要进一步的改进。
2算法实现本算法的实验在VC++6.0环境下实现。
先建一个类CDib ,用来实现位图的载入以及一些参数的获取。
新建一个类CPeronaMalik ,类中函数PM( CDib* pDib )用来实现PM 算法。
void CPeronaMalik:: PM( CDib* pDib ) {int i=0,j=0; int nWidth = pDib->GetWidth(); int nHeight = pDib->GetHeight(); int nWidthBytes = pDib->GetWidth();unsigned char* pDibBits = pDib->GetpDibBits(); //每行字节数int lineByte=(bmpWidth*biBitCount/8+3)/4*4;//循环变量,针对彩色图像,遍历每像素的三个分量 int k; int n;double temp1=0; double temp2=0; int nn;//迭代次数 double deltat;double delta;//步长,deltat 小于0.25 //c1、c2表示扩散函数 int p;//范数double sigma;//平均灰度double K;if(biBitCount==8){//对于灰度图像for(i=0;i<nHeight;i++){for(j=0;j<nWidth;j++){temp1=double(pDibBits[i*nWidthBytes+j])+temp1;}}//添加图像处理的代码////////////定参数////////////////////////nn=200;//迭代次数deltat=0.02;delta=deltat/2;//步长,deltat小于0.25//c1、c2表示扩散函数p=2;//范数sigma=0.4*temp1/(double(bmpHeight)*double(bmpWidth));//平均灰度int a=1;//参数,a>0//////////////////////////////////////////for(i=0;i<nHeight;i++){for(j=0;j<bmpWidth;j++){I1[i][j]=double(*(pBmpBuf+i*lineByte+j));I2[i][j]=double(*(pBmpBuf+i*lineByte+j));//交替存储}}for(n=0;n<nn;n++){temp2=0;K=1;for(i=0;i<bmpHeight;i++){for(j=0;j<bmpWidth;j++){temp2=pow(I1[i][j],p)+temp2;}}K=sigma*pow(temp2,1/double(p))/(bmpHeight*bmpWidth);////////////////for(i=0;i<nHeight;i++){for(j=0;j<nWidth;j++){if(i==0||i==bmpHeight-1||j==0||j==bmpWidth-1)RF[i][j]=0;elseRF[i][j]=1/(1+pow((pow(pow((I1[i+1][j]-I1[i-1][j])/2,2)+pow((I1[i][j+1]-I1[i][j-1])/2,2),0.5)/K),1+a));//扩散函数}}////////////////for(i=1;i<(nHeight-1);i++){for(j=1;j<(nWidth-1);j++)I2[i][j]=I1[i][j]+delta*(RF[i+1][j]*(I1[i+1][j]-I1[i][j])+RF[i-1][j]*(I1[i-1][j]-I1[i][j])+RF[i][j+ 1]*(I1[i][j+1]-I1[i][j])+RF[i][j-1]*(I1[i][j-1]-I1[i][j]));//迭代}for(i=0;i<bmpHeight;i++){for(j=0;j<bmpWidth;j++){I1[i][j]=I2[i][j];}}}for(i=0;i<nHeight;i++){for(j=0;j<nWidth;j++){if(I1[i][j]>255)*(pBmpBuf+i*lineByte+j)=255;elseif(I1[i][j]<0)*(pBmpBuf+i*lineByte+j)=0;else*(pBmpBuf+i*lineByte+j)=unsigned char(int(I1[i][j]));//cout<<int(*(pBmpBuf+i*lineByte+j))<<endl;}}}else if(biBitCount==24){//彩色图像for(i=0;i<nHeight/2;i++){for(j=0;j<nWidth/2;j++){for(k=0;k<3;k++)//每像素RGB三个分量分别置0才变成黑色*(pBmpBuf+i*lineByte+j*3+k)=0;}}3 实验结果源图采用lena256*256 灰度图像,经过处理后如右图可以看出,平滑效果很好,边缘保持的效果也是不错的。