数字图像处理实验 完整代码(原创精心整理)

时间:2019-05-12 01:56:52下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《数字图像处理实验 完整代码(原创精心整理)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《数字图像处理实验 完整代码(原创精心整理)》。

第一篇:数字图像处理实验 完整代码(原创精心整理)

实验一图象灰度变换(2学时)

一、实验目的:

理解数字图象处理的基本过程,掌握常用图象灰度变换算法,观察图像图象灰度变换的结果,加深对数字图象基本概念的理解。

二、实验内容:

1、灰度线性变换

变换函数为:s = a r + b设计程序,实现(a>1,b=0)、(00)和(a=1,b<0)等情况下的灰度变换处理,并比较处理前后的图象效果。

2、图象二值化

设计程序,实现图象的二值化。并给出三种门限下的处理结果。

3、负象变换

设计程序,实现图象的反转操作(负象变换),并比较处理前后的图象结果。

4、灰度非线性变换(选做内容)

设计程序,实现图象的指数变换和对数变换。

三、实验步骤:

1、获取实验用图像:使用imread函数将图像读入Matlab,用size函数(或imfinfo函数)获取图象大小。

2、产生灰度变换函数:s = a r + b

用imshow函数分别观察在(a>1,b=0)、(00)和(a=1,b<0)四情况下处理前后的结果。适当选择参数,使处理结果达到较好的效果。记录下所对应的参数。

3、用imwrite函数保存处理图象结果。

4、设计门限化方法实现图象的二值化的变换函数,并进行程序设计实现。分别选择三个门限值,观察处理结果。

5、设计实现反转操作的变换函数,并进行程序设计实现。观察处理结果。

6、分别设计实现图象的指数变换和对数变换的变换函数,参数自己选定,并比较处理前后的图象结果。(选做内容)

四、实验报告要求:

画出算法的规范化程序设计流程图。用plot等函数生成各类灰度变换函数曲线,用imshow函数显示处理前后图象。在实验报告中提交原图像和各种变换函数的曲线,以及按各种变换函数处理后的图像,并进行实验结果分析。选做内容可不写入报告中。

实验一代码

R=imread('实验1原图.jpg');[m,n]=size(R)figure, imshow(R);title('原图1');

S1=R*3;figure, imshow(S1);title('a=3,b=0');imwrite(S1,'1.21.jpg');

N=im2double(R);

S2=N*0.5;figure, imshow(S2);title('a=0.5,b=0');imwrite(S2,'1.22.jpg');

S3=R+10;figure, imshow(S3);title('a=1,b=10');imwrite(S3,'1.23.jpg');

S4=N+0.5;figure, imshow(S4);title('a=1,b=0.5');imwrite(S4,'1.24.jpg');

X1=R>64;figure, imshow(X1);title('门限值为64');imwrite(X1,'1.41.jpg');

X2=R>128;figure, imshow(X2);title('门限值为128');imwrite(X2,'1.42.jpg');

X3=R>192;figure, imshow(X3);title('门限值为192');imwrite(X3,'1.43.jpg');

Y=255-R;figure, imshow(Y);title('反转后的图像');imwrite(Y,'1.51.jpg');

Z1=N.^0.6;figure, imshow(Z1);title('指数变换后的图像');imwrite(Z1,'1.61.jpg');

Z2=log(N+1)%Z3=im2uint8(Z2)figure,imshow(Z3);figure,imshow(Z2,[]);title('对数变换后的图像');imwrite(Z2,'1.62.jpg');

实验二图象直方图及均衡(2学时)

一、实验目的:

理解图象灰度直方图的概念,掌握图象直方图的计算方法;掌握直方图均衡化图象增强技术,理解均衡化的处理过程。

二、实验内容:

1、图象直方图

设计程序,计算图象直方图。

2、直方图均衡化

设计程序,实现图象直方图均衡化处理,并比较处理前后图象。

三、实验步骤:

1、获取实验用图像:使用imread函数将图像读入Matlab用size函数(或imfinfo函数)获取图象大小。

2、计算图象的灰度直方图,并用plot等函数生成灰度直方图。

3、设计直方图均衡化算法,并进行程序设计实现。

4、根据直方图均衡化的灰度变换函数实现图象灰度的映射变换,获得均衡化的图象结果。

5、计算均衡化图象的灰度直方图,并用plot等函数生成灰度直方图。

6、用imwrite函数保存处理图象结果。

四、实验报告要求:

画出直方图均衡化算法的规范化程序设计流程图。用imshow函数显示处理前后图象,用plot等函数生成原始图象和处理图象的灰度直方图,并进行实验结果分析。

实验二代码

X=imread('实验2原图.jpg');[m,n]=size(X)h=zeros(256);for i=1:256

t=(X==(i-1));h(i)=sum(t(:));end a=0:255;figure,imshow(X);title('原图2');figure,bar(a,h);title('原图直方图');num=numel(X);c=cumsum(h);Y=round(c/num*256);W=zeros(m,n);for i=1:256

W1=Y(i)*(X==i-1);

W=W1+W;

W=round(W);end for i=1:256

t=(W==(i-1));h(i)=sum(t(:));end W=uint8(W);figure,imshow(W);title('均衡化后的图');figure,bar(a,h);title('均衡化后的直方图');imwrite(W,'2.6.jpg');

实验三图像中值滤波(2学时)

一、实验目的:

进一步加深理解和掌握中值滤波的原理和具体算法。能解释用大小和形状不同的滑动窗口进行中值滤波后图像所呈现的一些特征。

二、实验内容:

1、矩形邻域中值滤波设计程序,实现3×3邻域中值滤波。比较处理前后图像效果。

2、十字形中值滤波(选做)设计程序,实现5×5十字形中值滤波。比较处理前后图像效果。

三、实验原理:

对于给定的n个数值{a1, a2, …an}, 将它们按大小有序排列。当n为奇数时,位于中间位置的那个数值称为这n个数值的中值。记作 med [a1, a2, …an] 设x为M×N待处理图像,经窗口为Wn的中值滤波后,被处理像点(i, j)的输出为:)],([),(),(jixmedjiyjiWn= 式中W(i, j)表示点(i, j)的邻域,它含有n个像素。

n

四、实验步骤:

1)读入图像;2)创建合适的滑动窗口;3)将该窗口内的图像灰度值重新排序;4)将排序后位于中间的数值作为中值;5)用中值取代被处理像素的原灰度值;6)滑动窗口到下一个位置,重复3)~5)。

五、实验报告要求:

按统一规定的实验报告格式提交报告。画出算法的规范化程序设计流程图。应包含程序清单,处理前后的图像特征比较及编程的心得体会(指编程过程中的难点及如何克服它的)。

实验三代码

1.将下列函数保存成文件mymidfilt.m function B=mymidfilt(file_name, block_size)A = imread(file_name);[m,n] = size(A);

k = floor(block_size/2);

A2 = zeros(m+2*k,n+2*k);A2(k+1:m+k,k+1:n+k)= A;

%four corners

A2(1:k,1:k)= A(1,1);% Upper left corner.A2(1:k,n+k+1:n+2*k)= A(1,n);% Upper right corner.A2(m+k+1:m+2*k,1:k)= A(m,1);% Lower left corner.A2(m+k+1:m+2*k,n+k+1:n+2*k)= A(m,n);% Lower right corner.% four sides for i = 1:k

A2(i,k+1:n+k)= A(1,1:n);% Upper.A2(m+k+i,k+1:n+k)= A(m,1:n);% Lower.A2(k+1:m+k,i)= A(1:m,1);% Left.A2(k+1:m+k,n+k+i)= A(1:m,n);% Right.end;

B=zeros(m,n);

pixel_block = zeros(1,block_size^2);

for i = 1:m for j = 1:n

k = floor(block_size/2);

pixel_block = reshape(A2(i:i+2*k,j:j+2*k),1,block_size^2);sorted_block = sort(pixel_block);median_position = ceil(block_size^2 / 2);

block_median = sorted_block(median_position);B(i,j)= block_median;end;end;

B = uint8(B);

2.调用函数mymidfilt

R=imread('实验3原图.jpg');figure, imshow(R);title('原图3');X=mymidfilt('实验3原图.jpg', 5);figure, imshow(X);title('中值滤波后的图像');imwrite(X,'3.1.jpg');

实验三选作部分代码

A = imread('实验3原图.jpg');A=im2double(A);[m,n]=size(A);block_size=5;k = floor(block_size/2);

A2 = zeros(m+2*k,n+2*k);A2(k+1:m+k,k+1:n+k)= A(1:m,1:n);

%four corners A2(1:k,1:k)= A(1,1);

% Upper left corner.A2(1:k,n+k+1:n+2*k)= A(1,n);

% Upper right corner.A2(m+k+1:m+2*k,1:k)= A(m,1);

% Lower left corner.A2(m+k+1:m+2*k,n+k+1:n+2*k)= A(m,n);% Lower right corner.% four sides for i = 1:k

A2(i,k+1:n+k)= A(1,1:n);

% Upper.A2(m+k+i,k+1:n+k)= A(m,1:n);

% Lower.A2(k+1:m+k,i)= A(1:m,1);

% Left.A2(k+1:m+k,n+k+i)= A(1:m,n);

% Right.end;

B=zeros(m,n);B0=zeros(1,9);B1 = zeros(1,block_size^2);

for i = 1:m for j = 1:n

k = floor(block_size/2);

B1= reshape(A2(i:i+2*k,j:j+2*k),1,block_size^2);

B0=[B1(3)B1(8)B1(11)B1(12)B1(13)B1(14)B1(15)B1(18)B1(23)];

B0= sort(B0);

block_median = B0(5);B(i,j)=block_median;end;end;figure,imshow(B);title('5X5十字变换后图像');imwrite(B,'3.2.jpg');

实验四图像空域锐化增强(2学时)

一、实验目的

进一步加深理解和掌握图像锐化的的概念,掌握常用空域锐化增强技术。观察和理解图像锐化处理对加强图像中的目标边缘和图像细节的作用。理解图象锐化增强的处理过程和特点。

二、实验内容

1、一阶微分锐化增强

设计程序,分别实现Roberts、Sobel、Priwitt算子的锐化处理。观察处理前后图象效果,分析实验结果和算法特点。

2、拉普拉斯锐化增强

设计程序,实现拉普拉斯图像和原始图像叠加的增强处理,即

观察处理前后图像效果,分析实验结果和算法特点。

三、实验原理:

图像锐化技术的基本方法是对图像进行微商处理,并且将运算结果与原图像叠加。图像的梯度模值反映了图像灰度变化的速率,它包含了边缘及细节信息。我们可以梯度模值的计算作为算子,这个算子称为梯度算子。常用的有Roberts、Sobel、Priwitt、Laplace等算子。

四、实验要求:

按统一规定的实验报告格式提交报告。应包含程序清单,处理前后的图像特征比较及编程的心得体会(指编程过程中的难点及如何克服它的)。

实验四代码

1.将下列函数保存成move_mask1.m function B=move_mask1(filename,B1,B2)R=imread(filename);R1=rgb2gray(R);[m,n]=size(R1);R2=zeros(m+2,n+2);

R2(2:m+1,2:n+1)= R1(1:m,1:n);R2(1,1)= R1(1,1);R2(1,n+2)= R1(1,n);R2(m+2,1)= R1(m,1);R2(m+2,n+2)= R1(m,n);

R2(1,2:n+1)= R1(1,1:n);R2(m+2,2:n+1)= R1(m,1:n);R2(2:m+1,1)= R1(1:m,1);R2(2:m+1,n+2)= R1(1:m,n);

D0=zeros(3,3);D1=zeros(m,n);B= zeros(m,n);for i = 1:m;for j = 1:n;

D0 = R2(i:i+2,j:j+2);C1=B1.*D0;C2=B2.*D0;

D1(i,j)=abs(sum(sum(C1)))+abs(sum(sum(C2)));B(i,j)=D1(i,j);end;end;

2.将下列函数保存成move_mask2.m function B=move_mask2(filename,B1)R=imread(filename);[m,n]=size(R);R2=zeros(m+2,n+2);R2(2:m+1,2:n+1)= R(1:m,1:n);R2(1,1)= R(1,1);R2(1,n+2)= R(1,n);R2(m+2,1)= R(m,1);R2(m+2,n+2)= R(m,n);

R2(1,2:n+1)= R(1,1:n);R2(m+2,2:n+1)= R(m,1:n);R2(2:m+1,1)= R(1:m,1);R2(2:m+1,n+2)= R(1:m,n);

D0 = zeros(3,3);D1= zeros(m,n);

for i = 1:m;for j = 1:n;

D0 = R2(i:i+2,j:j+2);C1=B1.*D0;D1(i,j)=sum(sum(C1));B(i,j)=D1(i,j);end;end;3.调用函数move_mask1和move_mask2 B1= [-1-2-1;0 0 0;1 2 1];%sobel算子 B2= [-1 0 1;-2 0 2;-1 0 1];%sobel算子 B3= [-1 0 1;-1 0 1;-1 0 1];%prewitt算子 B4= [1 1 1;0 0 0;-1-1-1];%prewitt算子 B5= [0 0 0;0-1 0;0 0 1];%robert算子 B6= [0 0 0;0 0-1;0 1 0];%robert算子 B7= [0 1 0;1-4 1;0 1 0];%拉普拉斯算子

R1=imread('实验4原图1.jpg');figure, imshow(R1);title('实验4原图1');R2=imread('实验4原图2.jpg');figure, imshow(R2);title('实验4原图2');

E0= move_mask1('实验4原图1.jpg',B1,B2);E1= move_mask1('实验4原图1.jpg',B3,B4);E2= move_mask1('实验4原图1.jpg',B5,B6);E3= move_mask2('实验4原图2.jpg',B7);

[m,n]=size(R2);for i = 1:m;for j = 1:n;E4(i,j)=R2(i,j)-E3(i,j);%普拉斯图像和原始图像叠加 end;end;

figure, imshow(E0,[]);title('sobel算子锐化处理后的图像');figure, imshow(E1,[]);title('prewitt算子锐化处理后的图像');figure, imshow(E2,[]);title('robert算子锐化处理后的图像');figure, imshow(E3,[]);title('拉普拉斯图像');figure, imshow(E4,[]);title('普拉斯图像和原始图像叠加后的图像');

实验五图像频域滤波(4学时)

一、实验目的:

进一步加深理解和掌握图像频域的滤波器设计方法,学会在图像的频域中观察和分析干扰信号的频率分量在什么位置。

二、实验内容:

设计程序消除周期性噪声干扰信号。要求在图像频域中设计一Butterworth陷波器,其阶数n和陷波器半径D由学生根据上课所学理论知识通过自己的探索得出,从而加深

0理解二者对滤波器性能的影响。

三、实验原理:

n阶Butterworth 陷波器的传递函数为:

其中D为陷波器半径,D,D分别为点(u,v)到陷波器中心(u,v)和(-u,-v)0

0

0

0的距离。该传递函数使得以陷波器中心为圆心,D0为半径的圆内的所有u,v对应的滤波函数H(u,v)输出为0,也即将位于(u,v)和(-u,-v)处的频率成分去除。

0

0

0

0

四、实验步骤:

获取图像的频域图像,使用Matlab函数pixval观察干扰噪声的频率成分,找出所有的(u,v)对,针对每一个噪声源分别设计相应的陷波器。滤波完成后将频域图像实施00逆变换,即可显示处理后的图像。

五、实验要求:

按统一规定的实验报告格式提交报告。应包含程序清单,处理前后的图像特征比较及编程的心得体会(指编程过程中的难点及如何克服它的)。

实验五代码

1.将下列函数保存成mylvbo.m function n=mylvbo(r,u1,v1,u2,v2,d)[m,n]=size(r);Y=fft2(r);G=fftshift(Y);for u=1:m for v=1:n

d1=((u-u1)^2+(v-v1)^2)^(1/2);d2=((u-u2)^2+(v-v2)^2)^(1/2);d3=d;

H(u,v)=1/(1+(d3*d3/(eps+d1*d2))^2);end end

N=G.*H;

n1=ifft2(N);n=abs(n1);

2.调用函数mylvbo.m r=imread('实验5原图.tif');[m,n]=size(r);imshow(r);title('实验5原图象');y1=fft2(r);figure,imshow(abs(y1),[]);title('实验5原图像频谱');y2=fftshift(y1);figure,imshow(abs(y2),[]);title('中心移位后的频谱');impixelinfo;y3=log(1+abs(y2));figure,imshow(y3,[]);title('取对数变换后的频谱');impixelinfo;

n1=mylvbo(r,257,247,257,267,3);n2=mylvbo(n1,237,257,277,257,3);n3=mylvbo(n2,217,217,297,297,3);

figure,imshow(n1,[]);title('第一次频域滤波后图像');figure,imshow(n2,[]);title('第二次频域滤波后图像');figure,imshow(n3,[]);title('第三次频域滤波后图像');

imwrite(uint8(n3),'5.tif');

第二篇:《数字图像处理》实验教案

数 字 图 像 处 理

实 验 指 导 书

信息科学与工程学院电子系

二○○六年

数字图像处理是研究数字图像处理的基本理论、方法及其在智能化检测中应用的学科,是电子信息类本科专业的专业课。

本课程侧重于数字图像的基本处理,并对图像分析的基本理论和实际应用进行系统介绍;目的是使学生系统掌握数字图像处理的基本概念、原理和实现方法,学习图像分析的基本理论、典型方法和实用技术,具备解决通信领域的图像相关问题的初步能力,为今后的研究与开发打下扎实的基础。

实验一 常用的图像文件格式与格式转换和图像矩阵的显示方实验二 实验三

法 …………………………………………………………2

傅立叶变换……………………………………………………4 图像增强及编程处理…………………………………………5

实验一 常用的图像文件格式与格式转换和图像矩阵的显示方法

1. 实验目的

熟悉Matlab语言的初步使用;

熟悉常用的图像文件格式与格式转换;

熟悉图像矩阵的显示方法(灰度、索引、黑白、彩色); 熟悉图像矩阵的格式转换 2. 实验内容

练习图像读写命令imread和imwrite并进行图像文件格式间的转换。特别是索引图像与1,4,8,16比特图像的存储与转换。

熟悉下列模块函数 Image file I/O.imread

-Read image file.imwrite

Create and display image

imagesc

Make movie from multiframe indexed image.imshow

-Display image.subimage

-Display multiple images in single figure.truesize

-Adjust display size of image.warp

-Display image as texture-mapped surface.zoom

-Zoom in and out of image or 2-D plot.3. 实验步骤

a.Load cameraman.tif image from your hard disk(using function imread).b.Show the image in a figure window(using function image or imshow).c.Draw a brightness bar on the right side of the image(using function colorbar).d.Get image data from the current figure(axes)(using function getimage).e.Show the gray level of the image between 64 to 128(using function imagesc).f.Make a movie from a 4-D image(load mri, make the movie by immovie, then show movie by function movie).object.g.Draw the cameraman image on a cylinder(using function warp).Question: how to show the cameraman like this

Requirement: write a report to do the experiment from a to g.实验二

傅立叶变换

1.实验目的

熟悉傅立叶变换的概念和原理; 理解Fourier变换的意义。

2.实验内容

用Fourier变换算法对图像进行Fourier变换; 评价人眼对图像幅频特性和相频特性的敏感度。

3.实验步骤

<1>产生如图所示图像f1(x,y)(128×128 大小,暗处=0,亮处=255),用MATLAB中的fft2函数对其进行FFT;

<2>同屏显示原图f1和FFT(f1)的幅度谱图;

<3>若令f2(x,y)=(-1)

xy f1(x,y),重复以上过程,比较两幅图像的幅度谱的异同,简述理由;

<4>若将f2(x,y)顺时针旋转45度得到f3(x,y),试显示FFT(f3)的幅度谱,并与FFT(f2)的幅度谱进行比较;

<5>评价人眼对图像幅频特性和相频特性的敏感度。

4.实验报告

<1>简述实验目的及原理;

<2>给出实验代码,并加以注释; <3>对实验现象加以说明和讨论。

实验三

图像增强及编程处理

1. 实验目的

观察数字图像增强的效果; 熟悉数字图像增强的一般方法;

掌握数字图像增强的一般方法的Matlab编程实现。2. 实验内容

使用Photoshop观察数字图像增强的效果; 练习和掌握图像增强的Matlab编程。

熟悉下列模块函数 Image enhancement.histeq

Adust imae intensity values or colormap.Image noising.imnoise

-Add noise to an image.Image filtering

medfilt2

-Perform 2-D median filtering.ordfilt2

Perform 2-D adaptive noise-removal filtering.3. 实验步骤

<1> 使用Photoshop观察数字图像增强的效果 a.对比度增强

1)在Photoshop中打开一黑白灰度图像文件。

2)在图像菜单中选直方图项,观察原始图像的直方图。

3)在图像菜单调整子菜单中选亮度/对比度项,调节对比度滑块,观察图像变化。

4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。b.灰度变换

1)在Photoshop中打开一黑白灰度图像文件。

2)在图像菜单中选直方图项,观察原始图像的直方图。3)在图像菜单调整子菜单中选反相项,观察图像变化。

4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。5)画出灰度变换曲线。

6)在编辑菜单中选返回项,恢复原始图像。

7)在图像菜单调整子菜单中阈值项,调节阈值色阶滑块,观察图像变化。

8)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。9)画出灰度变换曲线。

c.直方图均衡化

1)在Photoshop中打开一黑白灰度图像文件。

2)在图像菜单中选直方图项,观察原始图像的直方图。3)在图像菜单调整子菜单中选色调均化项,观察图像变化。

4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。

d.图像平滑

1)在Photoshop中打开一黑白灰度图像文件。

2)在图像菜单中选直方图项,观察原始图像的直方图。

3)在滤镜菜单模糊子菜单中选进一步模糊项,观察图像变化。

4)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。5)在编辑菜单中选返回项,恢复原始图像。

6)在滤镜菜单模糊子菜单中选高斯模糊项,观察图像变化。

7)在图像菜单中选直方图项,观察处理后图像的直方图,并同(2)中的直方图比较。8)在Matlab Help菜单中, 选Demos项。

9)打开ToolboxesImage Processing项,选Noise Reduction Filtering,并运行。

10)选图像Blood、噪声类型Salt & Pepper、滤波器类型Median、邻域3x3,比较原始图像、受噪声污染图像、滤波后图像。11)改变参数,重做(10)。

12)选其他图像,重做(10)-(11)。

13)思考何种滤波器对抑制何种类型噪声更有效,邻域大小对抑制噪声效果及图像模糊程度的影响。

<2> 图像增强的Matlab编程

a.Load cameraman.tif image from your hard disk(using function imread).b.Show the image in a figure window.c.Show the histogram of the image(using function imhist).d.Enhance the contrast of the image using histogram equalization.e.Show the histogram of the image after processing.f.Compare the qualities of two images and makes a discussion about them.g.Add noises, such as gaussian, salt&pepper, speckle noise into the image respectively.Compare with the influence of the different Means and Variance.h.Remove the added noise from the image by function medfilt2, ordfilt2 and wiener2 respectively.Compare the qualities of the original images with the processed images and discuss the effect of the methods.Requirement:

Write a report to do the experiment.Make sure the report includes the discussion about the experiment.If the report just is a copy from others, the report will have a zero mark.

第三篇:数字图像处理实验一

实验报告

一、实验原理

1.调用imread函数将图像文件读入图像数组(矩阵)

A=imread(filename,fmt)2.调用imwrite函数将图像文件写入图像数组(矩阵)

imwrite(a,filename,fmt)3.调用imshow函数显示图像

Imshow(I,N)

4.图像的灰度平均值。调用ave=mean2(I)计算图像的均值 5.协方差矩阵。调用Cfg=COV(f,g)计算图像f和图像g的协方差矩阵 图像的灰度标准差。调用SD=STD2(I)的灰度标准差 7.图像的相关系数。调用函数rfg=CORR2(f,g)计算大小相等的两幅图像f和g的相关系数

二、图像及统计数据

原图像的平均灰度值= 77.5170

灰度标准差= 44.2095 灰度图像的平均灰度值= 74.4516

灰度标准差=37.1236 反白图像的平均灰度值= 180.5484

灰度标准差= 37.1236 灰度图像和反白图像的相关系数是

三、程序

I=imread('football.jpg');subplot(2,2,1);imshow(I);J=rgb2gray(I);subplot(2,2,2);imshow(J);Ave=mean2(J)Ave =

74.4516 SD=std2(double(J))SD =

37.1236 s=size(J);all_white=255*ones(s(1),s(2));all_white_uint8=uint8(all_white);K=imsubtract(all_white_uint8,J);subplot(2,2,3);imshow(K);imwrite(K,'football_iverse.jpg');

四、思考题

1.图像统计特征让我们更加了解图像的变换,使图像处理更加方便 2.五、心得体会

这次试验,我学会了使用marlab中的图像处理工具箱中的函数,对每个图像处理函数的功能都有了深入的认识。同时,我掌握了MATLAB的基本应用方法,对图像文件的读/写的方法有了初步认识。总之这次试验让我对MATLAB的图像处理有了一点学习,为更好地学习数字图像处理打下了一定的基础。

第四篇:数字图像处理实验一

一、实验目的及内容 内容: 灰度变换和空间滤波 1.灰度变换

利用imadjust函数(可结合stretchlim函数)对图像对比度拉伸 2.直方图绘制、均衡和匹配

利用imhist,histeq函数完成图2.8及图2.11的功能 3.空间滤波

线性空间滤波:

利用滤波函数imfilter函数完成图2.16中b,c,d,e的图像平滑效果

利用fspecial函数生成average,disk,gaussian滤波器完成图像的平滑效果

利用fspecial函数生成prewitt, sobel,laplacian滤波器完成图像的锐化效果

非线性空间滤波

利用中值滤波函数medfilt2去除椒盐噪声

二、实验原理

①、函数imadjust是一个基本的图像处理工具箱函数,用于对灰度级图像进行灰度变换。

g=imadjust(f,[low_in high_in],[low_out high_out],gamma),该函数将图像f中的灰度值映射为图像g中的新值,即将low_in至high_in之间的值映射到low_out至high_out之间的值。

②、函数imhist是处理图像直方图的核心函数

h=imhist(f,b),其中f为输入图像,h为其直方图,b是用来形成直方图的“容器”的数目。

③、函数histeq是实现直方图匹配的函数

g=histeq(f,hspec),其中f为输入图像,hspec为规定的直方图,g为输出图像,输出图像的直方图近似于指定的直方图hspec。

④、函数imfilter用来实现线性空间滤波

-1-g=imfilter(f,w,filtering_mode,boundary_options,size_options),其中f为输入图像,w为滤波模板,g为滤波后的结果。

用于平滑的滤波器有:’average’,’disk’,’gaussian’ 用于锐化的滤波器有:’laplacian’,’prewit’,’sobel’

三、实验源代码及结果

1、灰度变换、直方图绘制、均衡和匹配 f=imread('anna.jpg')%读取anna.jpg图片 subplot(2,4,1)imshow(f),title('原图')%显示原图

f1=imadjust(f,[0.2 0.5],[ 0 1])%将图片的灰度级别在0.2至0.5之间的部分拉伸

至0到1之间

subplot(2,4,2)imshow(f1),title('灰度拉伸之后')%显示灰度拉伸之后的图片 subplot(2,4,3)imhist(f),title('原图直方图')f2=histeq(f,128)%进行直方图均衡化,灰度级数设为128 subplot(2,4,4)imhist(f2),title('均衡化')%显示均衡化之后的直方图 g=imread('bag.png')%读取bag.png图像

h=imhist(g)%生成bag.png图像的直方图赋值给向量h subplot(2,4,5)imhist(g),title('规定的直方图')f3=histeq(f,h)%进行直方图匹配 subplot(2,4,6)imshow(f3),title('直方图匹配')运行结果

2、线性空间滤波

a=imread('block.png')%读取block.png图像 figure,subplot(2,3,1)imshow(a),title('原图')w=1/(31*31)*ones(31)%生成31*31的全为1的矩阵,命名为w a1=imfilter(a,w)%利用imfilter函数进行滤波 subplot(2,3,2)imshow(a1)a2=imfilter(a,w,'replicate')%图像的大小通过复制图像边界外的值来扩展 subplot(2,3,3)imshow(a2)a3=imfilter(a,w,'symmetric')%图像的大小通过边界镜像反射来扩展 subplot(2,3,4)

-3-imshow(a3)a4=imfilter(a,w,'circular')%图像的大小通过将图像处理为二维周期函数的一个周期来扩展

subplot(2,3,5)imshow(a4)aa=im2uint8(a)a5=imfilter(aa,w,'replicate')subplot(2,3,6)imshow(a5)

b=imread('anna.jpg')figure,subplot(2,2,1)imshow(b),title('原图')w1=fspecial('average',[4])%生成average平滑滤波器 b1=imfilter(b,w1)%进行滤波 subplot(2,2,2)imshow(b1),title('average')w2=fspecial('disk',5)%生成disk平滑滤波器 b2=imfilter(b,w2)subplot(2,2,3)imshow(b2),title('disk')w3=fspecial('gaussian',[3 3],0.5)%生成gaussian平滑滤波器 b3=imfilter(b,w3)

-4-subplot(2,2,4)imshow(b3),title('gaussian')

c=imread('anna.jpg')figure,subplot(2,2,1)imshow(c),title('原图')w4=fspecial('prewitt')%生成prewitt锐化滤波器 c1=imfilter(c,w4)subplot(2,2,2)imshow(c1),title('prewitt')w5=fspecial('sobel')%生成sobel锐化滤波器 c2=imfilter(c,w5)subplot(2,2,3)imshow(c2),title('sobel')w6=fspecial('laplacian')%生成laplacian锐化滤波器 c3=imfilter(c,w6)subplot(2,2,4)imshow(c3),title('laplacian')运行结果

3、非线性空间滤波

d=imread('anna.jpg')%读取anna.jpg图像,赋值给d d1=imnoise(d,'salt & pepper',0.3)%用imnoise函数对d生成椒盐噪声 figure,subplot(1,2,1)imshow(d1),title('被椒盐噪声污染的图像')d2=medfilt2(d1)&用中值滤波器进行滤波 subplot(1,2,2)imshow(d2),title('去除椒盐噪声的图像')运行结果

四、实验总结(心得体会)

通过这次实验,首先我熟悉了Matlab的基本操作,掌握了图像处理的基本操作,比如如何读一张图片进来、如何显示一张图片等等。这些都是最基本的操作。其次我知道了灰度变换的函数imadjust的使用,它是将选定的灰度级别范围变换为规定的范围,可以自由变换图像的灰度级别;还有掌握了如何画图像的直方图、将直方图均衡化等等。还学会了图像的滤波处理,通过函数imfilter进行滤波。常用的平滑滤波器有average,disk,gaussian、锐化滤波器有prewitt, sobel,laplacian。还学会了用中值滤波去除椒盐噪声。这些都是一些比较初级的函数,后面还有很多图像处理方法需要学习。

第五篇:简易photoshop代码数字图像处理实验报告

一.一个简单的“photoshop”软件 二.设计目的:

数字图像处理,就是用数字计算机及其他有关数字技术,对图像进行处理,以达到预期的目的。随着计算机的发展,图像处理技术在许多领域得到了广泛应用,数字图像处理已成为电子信息、通信、计算机、自动化、信号处理等专业的重要课程。

数字图像处理课程设计是在完成数字图像处理的相关理论的学习后,进行的综合性训练课程,其目的主要包括:

1、使学生进一步巩固数字图像处理的基本概念、理论、分析方法和实现方法;

2、增强学生应用VC++编写数字图像处理的应用程序及分析、解决实际问题的能力;

3、尝试将所学的内容解决实际工程问题,培养学生的工程实践能力,提高工科学生的就业能力。

三.设计内容: 1.打开图像: 主要代码:

static char szFilter[]=“BMP文件(*.bmp)|*.bmp||”;//定义过滤文件的类型

CString filename;

int ret=dlg.DoModal();//运行打开文件对方框

if(ret==IDOK)

{

filename=dlg.GetFileName();

//获取所选择图像的路径

m_dib.LoadFromFile(filename);

//加载图像

if(!m_dib.m_bLoaded)

//判断是否加载图像成功

{ AfxMessageBox(“图像打不开”);

} return;

CFileDialog dlg(TRUE,“bmp”,NULL, OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);//定义文件对话框对

效果图:

2.水平镜像:把图像的第一列和最后一列调转,第二列和倒数第二列换过来,以此类推下去,直到第nw/2为止。代码: int temp,i,j;

for(j=0;j

for(i=0;i

{

temp=m_dib.m_pdata[j*nw+i];

m_dib.m_pdata[j*nw+i]=m_dib.m_pdata[nw-i-1+j*nw];

m_dib.m_pdata[nw-i-1+j*nw]=temp;

} 效果图:

3.素描风格:先把灰度值与右下的作对比,如果差值大于一个值则说明这是轮廓,先把非轮廓的位置像素置为黑色,最后对所有像素进行底片化处理 代码: int temp,i,j;

for(j=0;j

for(i=0;i

{

temp=m_dib.m_pdata[j*nw+i]-m_dib.m_pdata[(j+1)*nw+i+1];

} if(temp<10)m_dib.m_pdata[j*nw+i]=0;

//黑色为0

for(j=0;j

for(i=0;i

{

int gray=m_dib.m_pdata[j*nw+i];

m_dib.m_pdata[j*nw+i]=255-gray;

}

图:

4图像雾化:在图像中引入一定的随机值,打乱图像中的像素值

代码:

int i,j,k,dat;

//i表示列,j表行

byte *ptemp=(byte *)new byte[nw*nh];

memset(ptemp,0,nw*nh);

for(j=0;j

for(i=0;i

{

k=rand()%8;//取任意的随机值

dat=j*nw+i+k;if(dat>=nw*nh)dat=nw*nh-1;ptemp[j*nw+i]=m_dib.m_pdata[dat];

} memcpy(m_dib.m_pdata,ptemp,nw*nh);效果图:

5.浮雕处理:通过勾画图象轮廓和降低周围像素色值,从而生成具有凹凸感的浮雕效果。其方法是生成一缓冲区,计算当前像素的左上角与右下角的像素值之差,再加上一个补值。将其存储到缓冲区。再将缓冲区的数据逐点替换到图像中并显示出来。代码:

int w=3,i,j;

//w为模板宽度

BYTE *p=new BYTE[nw*nh];

memcpy(p,m_dib.m_pdata,nw*nh);

for(j=w/2;j

for(i= w/2;i

{

p[j*nw+i]=m_dib.m_pdata[(j-1)*nw+i-1]*(1)+m_dib.m_pdata[(j+1)*nw+i+1]*(-1)+120;

}

memcpy(m_dib.m_pdata,p,nw*nh);

delete []p;效果图:

6.直方图均衡化 代码:

int n[256]={0},g[256]={0};//定义频数数组n,均衡化每个像素的灰度级的数组g

double f[256],t[256];//定义频率数组f,累加的频率数组t

int g_max=0,g_mim=255;

int i,j,k,z;

for(j=0;j

//统计灰度级的频数n for(i=0;i

z=m_dib.m_pdata[j*nw+i];

n[z]++;

}

for(k=0;k<=255;k++)

//统计每个灰度级出现的频率

f[k]=n[k]/(nw*nh*1.0);

//累计灰度级的频率

t[0]=f[0];for(k=1;k<=255;k++)

t[k]=t[k-1]+f[k];

for(j=0;j

for(i=0;i

g_max=w>g_max?w:g_max;//得到最大值

g_mim=w

}

for(k=0;k<=255;k++)

//利用公式求每个像素均衡化后的灰度级

g[k]=(int)((g_max-g_mim)*t[k]+g_mim+0.5);

for(j=0;j

//逐个替换

for(i=0;i

k=m_dib.m_pdata[j*nw+i];

m_dib.m_pdata[j*nw+i]=g[k];

}

for(j=0;j

//计算均衡化的直方图

{

//绘制原图像的直方图

for(i=0;i

{

BYTE temp=m_dib.m_pdata[j*nw+i];

m_hist[temp]++;} m_bHist=true;

CString str;int nh=m_dib.GetDIBHeight();int i;// 画坐标轴

// 绘制坐标轴

pDC->MoveTo(410,nh+20);//(410,nh+20)是直方图的左上角坐标

// 垂直轴

pDC->LineTo(410,nh+200);//(410,nh+200)是直方图的左下角坐标

// 水平轴

pDC->LineTo(710,nh+200);//(710,nh+200)是直方图的右下角坐标

// 写X轴刻度值

str.Format(“0”);pDC->TextOut(410, nh+200+10, str);str.Format(“50”);pDC->TextOut(460, nh+200+10, str);str.Format(“100”);pDC->TextOut(510, nh+200+10, str);str.Format(“150”);pDC->TextOut(560, nh+200+10, str);str.Format(“200”);pDC->TextOut(610, nh+200+10, str);str.Format(“255”);pDC->TextOut(665, nh+200+10, str);// 绘制X轴刻度 for(i = 0;i < 256;i += 25){

if((i & 1)== 0){

} // 10的倍数

pDC->MoveTo(i + 10, nh+200-2);pDC->LineTo(i + 10, nh+200+2);

}

else {

} // 10的倍数

pDC->MoveTo(i + 10, nh+200-2);pDC->LineTo(i + 10, nh+200+2);} // 绘制X轴箭头

pDC->MoveTo(705,nh+200-5);pDC->LineTo(710,nh+200);pDC->LineTo(705,nh+200+5);// 绘制y轴箭头

pDC->MoveTo(410,nh+20);pDC->LineTo(405,nh+20+5);pDC->MoveTo(410,nh+20);pDC->LineTo(415,nh+20+5);int max=0;for(i=0;i<256;i++)if(m_yuan[i]>max){

} max=m_yuan[i];

for(i=0;i<256;i++)pDC->MoveTo(410+i,nh+200);pDC->LineTo(410+i,nh+200-(m_yuan[i]*160/max));} if(m_bHist==true)//绘画新的直方图 {

CString str;int nh=m_dib.GetDIBHeight();int i;// 画坐标轴 // 绘制坐标轴

pDC->MoveTo(10,nh+20);//(10,nh+20)是直方图的左上角坐标

// 垂直轴

pDC->LineTo(10,nh+200);//(10,nh+200)是直方图的左下角坐标

// 水平轴

pDC->LineTo(310,nh+200);//(310,nh+200)是直方图的右下角坐标

// 写X轴刻度值 str.Format(“0”);

pDC->TextOut(10, nh+200+10, str);str.Format(“50”);pDC->TextOut(60, nh+200+10, str);str.Format(“100”);pDC->TextOut(110, nh+200+10, str);str.Format(“150”);pDC->TextOut(160, nh+200+10, str);str.Format(“200”);pDC->TextOut(210, nh+200+10, str);str.Format(“255”);pDC->TextOut(265, nh+200+10, str);// 绘制X轴刻度 for(i = 0;i < 256;i += 25){

if((i & 1)== 0){ // 10的倍数

} else {

// 10的倍数

pDC->MoveTo(i + 10, nh+200-2);pDC->LineTo(i + 10, nh+200+2);pDC->MoveTo(i + 10, nh+200-2);pDC->LineTo(i + 10, nh+200+2);} } // 绘制X轴箭头

pDC->MoveTo(305,nh+200-5);pDC->LineTo(310,nh+200);pDC->LineTo(305,nh+200+5);// 绘制y轴箭头 pDC->MoveTo(10,nh+20);pDC->LineTo(5,nh+20+5);pDC->MoveTo(10,nh+20);pDC->LineTo(15,nh+20+5);int max=0;for(i=0;i<256;i++)if(m_hist[i]>max){ max=m_hist[i];

for(i=0;i<256;i++)pDC->MoveTo(10+i,nh+200);pDC->LineTo(10+i,nh+200-(m_hist[i]*160/max));

} } 效果图:

四.心得体会:

通过这次数字图像处理的课程设计,对图片有了更深一层的认识,理解了对图像处理的一些原理,在这个课程设计过程中,需要自己去查阅资料,找资料,还需要理解所找到的资料,遇到问题独立去思考,或者去请教同学,给了我一个很好的锻炼机会,做事情一定要坚持,最后一定会有收获的。

五.参考文献:

《数字图像处理》 ——电子工业出版社

《vc++数字图像处理实验指导书》 曹老师、何家峰主编

下载数字图像处理实验 完整代码(原创精心整理)word格式文档
下载数字图像处理实验 完整代码(原创精心整理).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    数字图像处理上机实验(02091008)

    数字图像处理上机作业 数字图像处理上机作业 1. 产生右图所示亮块图像 f1(x,y)(128×128大小,暗处=0,亮处=255),对其进行FFT: (1) 同屏显示原图f1和FFT(f1)的幅度谱图; 图像: (2) 若令f......

    《数字图像处理》

    实验五 图像的几何变换 一.实验目的及要求 掌握图像几何变换的基本原理,熟练掌握数字图像的缩放、旋转、平移、镜像和转置的基本原理及其MATLAB编程实现方法。 二、实验内容 (......

    数字图像处理

    中南大学 数字图像处理实验 实验名称:空间滤波和频域滤波 班级:电子信息0802班 姓名:李哲 学号:0909080609 实验日期:2010年12月22日 目录 一,实验目的„„„„„„„„„„„„„......

    数字图像处理读书笔记

    数字图像处理读书笔记 本学期的数字图像处理课程已经进行了3周了,通过这3周的学习让我对数字图像处理有了一定的认知和理解。数字图像处理又称为计算机图像处理,它是指将图像......

    数字图像处理实验报告

    实 验 报 告 书 系部学生专业班实验 名称姓名名称 级时间:: : : : 实验一 直方图均衡 一、实验目的 在学习图像直方图的概念、计算方法、性质和相关应用基础上,生成、绘制图像......

    数字图像处理实验报告

    数字图像处理 实验报告 目录 1. 数字图像处理简介2. 实验目的3. 实验内容4. 实验结果及代码展示5. 算法综述6. Matlab优势7. 总结8. 存在问题 一、 数字图像处理简介......

    数字图像处理实验报告

    数字图像处理 实验报告 班级:通信103 学号:201027201 姓名:计富威 指导教师:孙洁 实验一 MATLAB数字图像处理初步 一、实验目的与要求 1.熟悉及掌握在MATLAB中能够处理哪些格......

    数字图像处理实验报告

    实验一 数字图像的获取 一、实验目的 1、了解图像的实际获取过程。 2、巩固图像空间分辨率和灰度级分辨率、邻域等重要概念。 3、熟练掌握图像读、写、显示、类型转换等 mat......