数图实验报告总汇文档格式.docx
- 文档编号:21803786
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:25
- 大小:133.11KB
数图实验报告总汇文档格式.docx
《数图实验报告总汇文档格式.docx》由会员分享,可在线阅读,更多相关《数图实验报告总汇文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
11.I=double(I);
12.fori=1:
m
13.forj=1:
n
14.ifI(i,j)<
fa
15.J(i,j)=k1*I(i,j);
16.elseifI(i,j)<
fb
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,'
)
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格式。
实验三:
数字图像的几何变换
实验
(一)为必做;
实验时间宽裕的同学继续做实验
(二)。
验证数字图像的几何变换算法
实验原理:
图像的几何变换是通过将图像中所有像素按要求进行移动来实现的。
通过像素坐标变换公式,将原图像所有像素从位置(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;
图像旋转程序:
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:
11.forj=1:
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
22.imshow(J)
23.imwrite(J,'
旋转图像.bmp'
实验四:
数字图像的噪声抑制
实验内容
(1)
(2)为必做;
在时间宽裕的情况下继续做实验内容(3)。
通过本实验,掌握运用Matlab软件编程对图像噪声进行滤波处理的方法。
软件:
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
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(:
));
(2)采用中值滤波算法抑制图像椒盐噪声。
椒盐噪声的幅值基本恒定,但噪声出现的位置是随机的。
中值滤波方法对椒盐噪声的抑制效果较好。
中值滤波原理如下:
3的模板,让模版中的9个像素按照灰度值大小进行排序,取排列在中间的灰度值作为待处理像素的新灰度值。
采用matlab编程,对椒盐噪声污染的图像lenap.bmp进行中值滤波处理。
将处理后的图像取名为“中值滤波结果”,在当前路径下保存为bmp格式.
2.中值滤波算法:
8.J(i,j)=median(median(I(i-1:
j+1)));
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;
lenap.bmp'
(3)采用边界保持的中值滤波算法抑制图像中的椒盐噪声。
该算法在抑制噪声的同时,有利于避免图像边界的模糊。
算法原理如下:
3的模板,在模版的其他8个像素中,选择灰度值最与待处理像素最为接近的5个像素(不包括当前像素)的灰度值,对这5个灰度值进行排序,取中间的灰度值作为待处理像素的新灰度值。
采用matlab编程,对椒盐噪声污染的图像lenap.bmp进行边界保持的中值滤波处理。
将处理后的图像取名为“边界保持滤波结果”,在当前路径下保存为bmp格式。
3.边界保持的中值滤波算法:
J(i,j)=median(a(d(1:
5)));
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('
边界保持滤波结果'
3.J=I;
4.[m,n]=size(I);
5.I=double(I);
6.J=double(J);
7.fori=2:
8.forj=2:
9.a=reshape(I(i-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微机软件:
(1)采用水平方向的一阶微分算子处理图像。
采用水平方向的一阶微分算子处理图像可以用于提取图像水平方向的边缘信息,通过一个3×
3的模板来实现。
采用取绝对值的方法对锐化图像进行后处理,即按照下式计算像素锐化后的值:
计算结果中有的像素值还可能大于255。
为了显示处理后的图像,将像素值限幅为255。
水平一阶微分算子锐化:
1.clear,clc
building.jpg'
5.[m,n]=size(J);
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;
7.I=uint8(I);
J=uint8(J);
8.subplot(1,2,1),imshow(I),title('
原图像'
9.subplot(1,2,2),imshow(J),title('
水平锐化图像.bmp'
(2)采用Sobel算子处理图像。
Sobel算子处理图像可以用于提取任意方向的边缘信息。
其计算公式如下:
上式中的dx与dy都是采用以下3×
3的模板来计算:
即按照下式计算dx与dy:
(二阶微分算子)背景保持锐化:
Sobel算子锐化:
4.J=zeros(size(I));
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
15.I=uint8(I),J=uint8(J);
16.imshow(J)
17.imwrite(J,'
Sobel锐化图像.bmp'
J(i,j)=4*I(i,j)-I(i-1,j)-I(i+1,j)-I(i,j-1)-I(i,j+1);
8.J=I+J;
9.I=uint8(I),J=uint8(J);
10.imshow(J)
背景保持的锐化图像.bmp'
(1)给定灰度图像building.jpg,采用matlab编程,采用水平方向的一阶微分算子对其进行处理。
显示处理后的图像,并将其在当前路径下保存为“水平锐化图像.bmp”。
(2)给定灰度图像building.jpg,采用matlab编程,采用Sobel算子对其进行处理。
显示处理后的图像,并将其在当前路径下保存为“Sobel锐化图像.bmp”。
(3)对于给定图像building.jpg,设计一种背景保持的图像锐化方法(例如,可以将Laplacian算子的处理结果与原图像进行叠加),使该图像的边缘变得清晰。
并将其在当前路径下保存为“背景保持的锐化图像.bmp”。
设计一种方法,使图像锐化的程度可以人为控制与选择。
显示处理前后的图像,对比视觉效果的变化。
实验六:
图像分割
实验内容
(1)为必做;
实验内容
(2)为选做。
验证图像分割的若干算法。
图像分割是一种将灰度图像转换为二值图像的过程。
计算公式如下:
图像分割的关键在于确定合理的阈值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-参数法:
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:
20.forj=1:
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
seal.bmp'
5.J=logical(zeros(m,n));
6.p=0.18
7.h=zeros(1,256);
8.fori=1:
9.forj=1:
10.h(I(i,j)+1)=h(I(i,j)+1)+1;
11.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];
实验七:
二值图像处理
验证二值图像处理算法
1、二值图像的腐蚀处理
腐蚀是一种消除连通域的边界点,使边界向内收缩的处理,可以使粘连的物体分开。
本实验规定目标物为黑色,像素值为0;
背景为白色,像素值为1。
算法描述如下:
扫描整个图像,处理每一个像素值为0的目标点:
将结构元素的原点移到该点,判断该结构元素所覆盖的所有像素是否存在灰度值为1的像素?
如果是,则将该像素值改为1;
如果不是,则保持该像素值不变。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 报告 总汇