数图实验报告总汇.docx

上传人:b****6 文档编号:8667596 上传时间:2023-02-01 格式:DOCX 页数:25 大小:133.11KB
下载 相关 举报
数图实验报告总汇.docx_第1页
第1页 / 共25页
数图实验报告总汇.docx_第2页
第2页 / 共25页
数图实验报告总汇.docx_第3页
第3页 / 共25页
数图实验报告总汇.docx_第4页
第4页 / 共25页
数图实验报告总汇.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

数图实验报告总汇.docx

《数图实验报告总汇.docx》由会员分享,可在线阅读,更多相关《数图实验报告总汇.docx(25页珍藏版)》请在冰豆网上搜索。

数图实验报告总汇.docx

数图实验报告总汇

实验二:

数字图像增强

实验

(一)为必做,写入实验报告;在时间宽裕的情况下继续做实验

(二),但不写入报告。

实验目的:

验证数字图像增强算法

实验设备与软件:

硬件:

P4微机;软件:

Matlab

实验原理与实验内容:

(一)采用对比度线性展宽算法增强人物图像。

对比度线性展宽,原图像像素灰度f(i,j)与处理后图像像素灰度g(i,j)的映射关系可用下图表示。

其中,K1、K2、K3为三段折线的斜率。

用计算公式表达像素的灰度映射关系为:

给定灰度图像girl.bmp,采用matlab编程,请对其进行线性对比度展宽处理。

原图中重要景物灰度分布在[fa,fb]范围,希望处理后图像的重要景物灰度分布范围为[ga,gb]。

相关参数如下:

fa=30,fb=140,ga=60,gb=200。

实现上述算法,最后显示处理后的图像,并将其取名为new-girl,在当前路径下保存为bmp格式。

编程思路提示:

1)对fa,fb,ga,gb进行赋值;

2)读取图像girl.bmp的数据,存放到矩阵I;

3)读取矩阵I的行与列的大小,赋给变量m与n

4)把I的数据类型从uint8转换为double

5)计算三段折线的斜率k1、k2、k3;

6)用循环语句,根据对比度线性展宽的计算公式,计算对每个像素的新灰度值,赋值给新矩阵J;

7)把I与J的数据类型从double转换为uint8;

8)将矩阵J保存为新图像“new_girl.bmp”。

9)在同时显示原始图像girl.bmp与新图像new_girl.bmp。

并分别用“原始图像”与“新图像”为标题。

对比度线性展宽程序:

1.clc,clear

2.fa=70;

3.fb=180;

4.ga=40;

5.gb=220;

6.I=imread('girl.bmp');

7.[m,n]=size(I);

8.k1=4/7;

9.k2=18/11;

10.k3=7/15;

11.I=double(I);

12.fori=1:

m

13.forj=1:

n

14.ifI(i,j)

15.J(i,j)=k1*I(i,j);

16.elseifI(i,j)

17.J(i,j)=k2*(I(i,j)-fa)+ga;

18.elseI(i,j)>=fb

19.J(i,j)=k3*(I(i,j)-fb)+gb;

20.end

21.end

22.end

23.I=uint8(I);

24.J=uint8(J);

25.imwrite(I,'girl.bmp')

26.imwrite(J,'newgirl.bmp')

27.subplot(1,2,1),imshow(I),title('原始图像');

28.subplot(1,2,2),imshow(J),title('新图像');

 

10)

(二)采用灰级窗算法增强CT图像中的肺部区域。

灰级窗算法只显示指定灰度级范围内的信息,并充分其增强对比度

本实验根据给定的CT图像,通过灰级窗算法,充分增强肺部区域,尽量不显示其他人体组织。

用计算公式灰度映射关系请同学们自行推导。

已知肺部区域的图像灰度范围大致为:

fa=45;fb=160。

采用matlab编程实现上述算法,最后显示处理后的图像,并将其取名为lung_window,在当前路径下保存为bmp格式。

 

实验三:

数字图像的几何变换

实验

(一)为必做;实验时间宽裕的同学继续做实验

(二)。

实验目的:

验证数字图像的几何变换算法

实验设备与软件:

硬件:

P4微机;软件:

Matlab

实验原理:

图像的几何变换是通过将图像中所有像素按要求进行移动来实现的。

通过像素坐标变换公式,将原图像所有像素从位置(i,j)放置到新图像的新位置(i’,j’)。

1、图像平移。

假设图像在画布上沿行方向与列方向分别移动Δi与Δj。

设图像的任一像素坐标为(i,j),其在新图像中的坐标为(i’,j’)。

平移处理的像素坐标变换关系如下:

提示:

假设原图像的大小为M×N,则新图像为(M+Δi)×(N+Δj)。

2、图像的水平镜像。

以图像垂直中轴线为中心,交换图像的左右两部部分。

假设图像的大小为M×N,水平镜像处理的像素坐标变换关系如下:

提示:

新图像与原图像相同大小。

3、图像的旋转。

以图像中的某一点为原点,按照顺时针或逆时针旋转一定的角度。

图像逆时针旋转的像素坐标变换关系如下:

提示:

(1)原图像四个顶点像素旋转之后的坐标最大值与最小值为:

imin=min([cosθ-sinθ,m*cosθ-sinθ,cosθ-n*sinθ,m*cosθ-n*sinθ]);

imax=max([cosθ-sinθ,m*cosθ-sinθ,cosθ-n*sinθ,m*cosθ-n*sinθ]);

jmin=min([sinθ+cosθ,m*sinθ+cosθ,sinθ+n*cosθ,m*sinθ+n*cosθ]);

jmax=max([sinθ+cosθ,m*sinθ+cosθ,sinθ+n*cosθ,m*sinθ+n*cosθ]);

(2)旋转后的图像大小:

M=imax-imin;N=jmax-jmin。

定义新图像,像素值全部为0。

(3)对旋转后的图像像素,需要平移的行数与列数为:

di=1-imin;dj=1-jmin

(4)使用原图像的每个像素(i,j)的灰度值,填充到新图像中:

(新坐标:

整型,限幅)

J(i*cosθ-j*sinθ+di,i*sinθ+j*cosθ+dj)=I(i,j)

(5)填充空洞像素:

判断新图像的每个像素:

如果其值为0,且其四近邻像素值全部不为0,则用其上方的像素值对该像素进行赋值。

实验内容:

(一)给定灰度图像capsicum.jpg,分别进行平移与水平镜像处理:

1、将图像平移120行与90列,将其保存为bmp格式文件,文件名为“平移图像”。

2、将图像进行水平镜像处理,将其保存为bmp格式文件,文件名为“水平镜像图像”。

(二)将图像逆时针旋转300,将其保存为bmp格式文件,文件名为“旋转图像”。

注意:

定义M×N的黑色背景图像J:

J=uint8(zeros(M,N));

四舍五入取整数:

x=round(x);

水平镜像程序:

1.Clc,clear

2.I=imread('capsicum.jpg');

3.[mn]=size(I);

4.I=double(I);

5.J=uint8(zeros(m,n));

6.fori=1:

m;

forj=1:

n;

J(i,n-j+1)=I(i,j);

end

7.end

8.I=uint8(I)

9.J=uint8(J)

10.imwrite(J,'new_capsicum2.bmp')

11.subplot(1,2,1),imshow(I),title('capsicum')

12.subplot(1,2,2),imshow(J),title('new_capsicum2')

取向量的最大元素值:

例如max([3,5,8])=8;取向量的最小元素值:

例如min([3,5,8])=3;

图像旋转程序:

1.clc,clear

2.I=imread('capsicum.jpg');

3.[m,n]=size(I);

4.a=30*pi/180

5.imin=.……;

6.imax=.........;

7.jmin=..........;

8.M=imax-imin,N=jmax-jmin,di=1-imin,dj=1-jmin

9.J=uint8(zeros(M,N));

10.fori=1:

m

11.forj=1:

n

12.J(round(i*cos(a)-j*sin(a)+di),round(i

*sin(a)+j*cos(a)+dj))=I(i,j);

13.end

14.end

15.fori=2:

M-1

16.forj=2:

N-1

17.ifJ(i,j)==0&J(i+1,j)~=0&J(i-1,j)

~=0&J(i,j+1)~=0&J(i,j-1)~=0

18.J(i,j)=J(i-1,j);

19.end

20.end

21.end

22.imshow(J)

23.imwrite(J,'旋转图像.bmp')

实验四:

数字图像的噪声抑制

实验内容

(1)

(2)为必做;在时间宽裕的情况下继续做实验内容(3)。

实验目的:

通过本实验,掌握运用Matlab软件编程对图像噪声进行滤波处理的方法。

实验设备与软件:

硬件:

P4微机;软件:

Matlab软件

实验内容:

(1)对高斯噪声污染的图像,进行均值滤波处理。

(2)对椒盐噪声污染的图像,进行中值滤波处理。

(3)对椒盐噪声污染的图像,进行边界保持的中值滤波处理。

实验原理:

(1)采用均值滤波算法抑制图像高斯噪声。

高斯噪声的特点是:

图像中的每一点都存在噪声,但噪声的幅值是随机分布的。

均值滤波方法对高斯噪声的滤波效果较好。

均值滤波原理如下:

对于待处理的像素,使用3×3的模板,计算该模版中9个像素的灰度平均值,作为该像素的新灰度值。

采用matlab编程,对高斯噪声污染图像lenag.bmp进行均值滤波处理。

在同一个窗口中显示与比较噪声图像与处理后的图像。

将处理后的图像取名为“均值滤波结果”,在当前路径下保存为bmp格式。

1.均值滤波算法:

1.

8.I=uint8(I);

9.J=uint8(J);

10.imshow(J),imwrite(J,'均值滤波结果图像.bmp')

clc,clear

2.I=imread('lenag.bmp');

3.I=double(I);

4.J=I;

5.[m,n]=size(I);

6.fori=2:

m-1;

forj=2:

n-1;

A=J(i-1:

i+1,j-1:

j+1);

J(i,j)=mean(A(:

));

end

7.end

(2)采用中值滤波算法抑制图像椒盐噪声。

椒盐噪声的幅值基本恒定,但噪声出现的位置是随机的。

中值滤波方法对椒盐噪声的抑制效果较好。

中值滤波原理如下:

对于待处理的像素,使用3×3的模板,让模版中的9个像素按照灰度值大小进行排序,取排列在中间的灰度值作为待处理像素的新灰度值。

采用matlab编程,对椒盐噪声污染的图像lenap.bmp进行中值滤波处理。

在同一个窗口中显示与比较噪声图像与处理后的图像。

将处理后的图像取名为“中值滤波结果”,在当前路径下保存为bmp格式.

2.中值滤波算法:

1.

8.J(i,j)=median(median(I(i-1:

i+1,j-1:

j+1)));

end

end

9.I=uint8(I);

10.J=uint8(J);

11.imwrite(J,'中值滤波结果.bmp');

12.subplot(1,2,1),imshow(I);

13.subplot(1,2,2),imshow(J),title('中值滤波结果')

clc;clear;

2.I=imread('lenap.bmp');

3.I=double(I);

4.J=I;

5.[m,n]=size(I);

6.fori=2:

m-1;

forj=2:

n-1;

(3)采用边界保持的中值滤波算法抑制图像中的椒盐噪声。

该算法在抑制噪声的同时,有利于避免图像边界的模糊。

算法原理如下:

对于待处理的像素,使用3×3的模板,在模版的其他8个像素中,选择灰度值最与待处理像素最为接近的5个像素(不包括当前像素)的灰度值,对这5个灰度值进行排序,取中间的灰度值作为待处理像素的新灰度值。

采用matlab编程,对椒盐噪声污染的图像lenap.bmp进行边界保持的中值滤波处理。

在同一个窗口中显示与比较噪声图像与处理后的图像。

将处理后的图像取名为“边界保持滤波结果”,在当前路径下保存为bmp格式。

3.边界保持的中值滤波算法:

1.

J(i,j)=median(a(d(1:

5)));

end

end

14.J=uint8(J);

15.I=uint8(I);

16.imwrite(J,'边界保持滤波结果.bmp');

17.subplot(1,2,1),imshow(I);

18.subplot(1,2,2),imshow(J),title('边界保持滤波结果')

clc;clear;

2.I=imread('lenap.bmp');

3.J=I;

4.[m,n]=size(I);

5.I=double(I);

6.J=double(J);

7.fori=2:

m-1;

8.forj=2:

n-1;

9.a=reshape(I(i-1:

i+1,j-1:

j+1),1,9);

10.a(5)=[];

11.b=a-I(i,j);

12.b=abs(b);

13.[c,d]=sort(b);

相关的Matlab函数提示:

将矩阵A转换为向量B:

B=reshape(A,1,n),其中n为向量的元素总数;

将向量A中的第k个元素去掉:

A(k)=[];//如:

A=[35146],令A(3)=[];则A=[3546]。

向量排序函数为:

sort()//如:

A=[35146],则sort(A)=[13456]

[B,C]=sort(A);B为向量A排序后的新向量,C为A的各元素下标的排序向量

如:

A=[35146],[B,C]=sort(A);则有:

B=[13456];C=[31425];

矩阵I的坐标(i,j)周围的3×3矩阵:

I(i-1:

i+1,j-1:

j+1))

取向量中间值运算:

median()//如:

A=[35146],则median(A)=4;

取向量平均值运算:

mean()//如:

A=[339],则mean(A)=5

取矩阵A的所有元素的平均值:

mean(mean(A))

获取矩阵A的所有元素的中间值:

median(median(A))(注意:

是各行中间值构成向量的中间值,此处不合题意不能用,均值函数可用)

 

实验五:

数字图像的锐化处理

实验目的:

验证与设计数字图像的锐化算法

实验设备与软件:

硬件:

P4微机软件:

Matlab软件

实验原理:

(1)采用水平方向的一阶微分算子处理图像。

采用水平方向的一阶微分算子处理图像可以用于提取图像水平方向的边缘信息,通过一个3×3的模板来实现。

采用取绝对值的方法对锐化图像进行后处理,即按照下式计算像素锐化后的值:

计算结果中有的像素值还可能大于255。

为了显示处理后的图像,将像素值限幅为255。

水平一阶微分算子锐化:

1.clear,clc

2.I=imread('building.jpg');

3.I=double(I);

4.J=I;

5.[m,n]=size(J);

6.fori=2:

m-1;

forj=2:

n-1;

J(i,j)=abs(I(i-1,j-1)-I(i+1,j-1)+2*(I(i-1,j)-I(i+1,j))+I(i-1,j+1)-I(i+1,j+);

ifJ(i,j)>255

J(i,j)=255;

end

end

end

7.I=uint8(I);J=uint8(J);

8.subplot(1,2,1),imshow(I),title('原图像');

9.subplot(1,2,2),imshow(J),title('新图像');

10.imwrite(J,'水平锐化图像.bmp')

(2)采用Sobel算子处理图像。

Sobel算子处理图像可以用于提取任意方向的边缘信息。

其计算公式如下:

上式中的dx与dy都是采用以下3×3的模板来计算:

即按照下式计算dx与dy:

为了显示处理后的图像,将像素值限幅为255。

(二阶微分算子)背景保持锐化:

1.

Sobel算子锐化:

1.clc,clear

2.I=imread('building.jpg');

3.I=double(I);

4.J=zeros(size(I));

5.[m,n]=size(I);

6.fori=2:

m-1

7.forj=2:

n-1

8.x=I(i+1,j-1)-I(i-1,j-1)+2*(I(i+1,j)-I(i-1,j))+I(i+1,j+1)-I(i-1,j+1);

9.y=I(i-1,j+1)-I(i-1,j-1)+2*(I(i,j+1)-I(i,j-1))+I(i+1,j+1)-I(i+1,j-1);

10.J(i,j)=(x.^2+y.^2).^0.5;

11.ifJ(i,j)>225J(i,j)=225;

12.end

13.end

14.end

15.I=uint8(I),J=uint8(J);

16.imshow(J)

17.imwrite(J,'Sobel锐化图像.bmp')

clc,clear

2.I=imread('building.jpg');

3.I=double(I);

4.J=zeros(size(I));

5.[m,n]=size(I);

6.fori=2:

m-1

forj=2:

n-1

J(i,j)=4*I(i,j)-I(i-1,j)-I(i+1,j)-I(i,j-1)-I(i,j+1);

ifJ(i,j)>225J(i,j)=225;

end

end

7.end

8.J=I+J;

9.I=uint8(I),J=uint8(J);

10.imshow(J)

11.imwrite(J,'背景保持的锐化图像.bmp')

 

实验内容:

(1)给定灰度图像building.jpg,采用matlab编程,采用水平方向的一阶微分算子对其进行处理。

显示处理后的图像,并将其在当前路径下保存为“水平锐化图像.bmp”。

(2)给定灰度图像building.jpg,采用matlab编程,采用Sobel算子对其进行处理。

显示处理后的图像,并将其在当前路径下保存为“Sobel锐化图像.bmp”。

(3)对于给定图像building.jpg,设计一种背景保持的图像锐化方法(例如,可以将Laplacian算子的处理结果与原图像进行叠加),使该图像的边缘变得清晰。

并将其在当前路径下保存为“背景保持的锐化图像.bmp”。

设计一种方法,使图像锐化的程度可以人为控制与选择。

显示处理前后的图像,对比视觉效果的变化。

实验六:

图像分割

实验内容

(1)为必做;实验内容

(2)为选做。

实验目的:

验证图像分割的若干算法。

实验设备与软件:

硬件:

P4微机软件:

Matlab软件

实验原理:

图像分割是一种将灰度图像转换为二值图像的过程。

计算公式如下:

图像分割的关键在于确定合理的阈值Th。

(一)p-参数法

p-参数法,根据目标物在画面中所占的比例来选择阈值Th。

对于已知目标物在画面中所占比例的情况下使用效果较好。

假设背景为白色,目标物为黑色,算法步骤如下:

1)输入目标物所占画面的比例p;

2)计算原图的灰度直方图h;h

(1)、h(256)是什么含义?

(如何编程求向量h?

3)计算灰度小于Th的像素个数N;(可以将N设置为对应于不同Th的向量,?

4)设图像的尺寸为m×n,判断满足N(Th)>p*(m×n)条件的最小值N(Th),则输出Th的值;

5)按阈值Th对图像进行分割。

p-参数法:

1.

15.fora=2:

255;

16.N(a)=N(a-1)+h(a);

17.end

18.Th=min(find(N>p*m*n))

19.fori=1:

m;

20.forj=1:

n;

21.ifI(i,j)>=Th

22.J(i,j)=1;

23.elseJ(i,j)=0;

24.end

25.end

26.end

27.I=uint8(I);

28.subplot(1,2,1),imshow(J),title('新图像')

29.subplot(1,2,2),imshow(I),title('原图像')

30.imwrite(J,'p参数法分割图像.bmp')

clear,clc

2.I=imread('seal.bmp');

3.I=double(I);

4.[m,n]=size(I);

5.J=logical(zeros(m,n));

6.p=0.18

7.h=zeros(1,256);

8.fori=1:

m

9.forj=1:

n

10.h(I(i,j)+1)=h(I(i,j)+1)+1;

11.end

12.end

13.N

(1)=h

(1);

 

(二)基于灰度直方图的图像分割

•假设某图像的灰度直方图具有二峰性(f(Ta)=Ha;f(Tb)=Hb),表明这个图像较亮的区域和较暗的区域可以较好地分离。

取二峰间的谷点为阈值Th,可以得到好的二值处理的效果。

实验内容:

(1)给定灰度图像Seal.bmp,假设已知目标物在画面所占比例为18%。

采用matlab编程,采用p-参数法对其进行分割处理。

在同一个窗口中同时显示原图像与分割图像,并将其在当前路径下保存为“p参数法分割图像.bmp”。

(h,N,Th,分割)

(2)给定灰度图像ct.bmp,假设其直方图具有明显的二峰性:

已知两个峰值对应的灰度级分别为:

Ta=141;Tb=173。

采用matlab编程,采用两峰之间的谷点所对应的灰度级作为阈值Th,对图像进行分割处理。

显示原图像的直方图,显示处理后的图像,并将其在当前路径下保存为“基于直方图双峰性分割图像.bmp”。

(h,局部h,最小像素个数的对应灰度级获取)

(略)

 

编程提示:

(1)图像直方图h为一个向量:

h=zeros(1,256)。

h

(1)~h(256)

(2)显示图像直方图:

imhist(I);

(3)定义分割后的二值图像矩阵J:

J=logical(zeros(m,n));

(4)向量排序函数为:

sort()[B,C]=sort(A);B为向量A排序后的新向量,C为A的各元素下标的排序向量。

(5)若x=[136078];y=find(x>2);那么:

y=[2356];

 

实验七:

二值图像处理

实验目的:

验证二值图像处理算法

实验设备与软件:

硬件:

P4微机软件:

Matlab软件

实验原理:

1、二值图像的腐蚀处理

腐蚀是一种消除连通域的边界点,使边界向内收缩的处理,可以使粘连的物体分开。

本实验规定目标物为黑色,像素值为0;背景为白色,像素值为1。

算法描述如下:

扫描整个图像,处理每一个像素值为0的目标点:

将结构元素的原点移到该点,判断该结构元素所覆盖的所有像素是否存在灰度值为1的像素?

如果是,则将该像素值改为1;如果不是,则保持该像素值不变。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1