图像处理课程设计Word格式文档下载.docx
《图像处理课程设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《图像处理课程设计Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。
2.2算法设计
(1)读入初始图片及加噪图片。
clc;
clear;
f=imread();
g=imread();
(2)
利用空域滤波,去除随机噪声,此时用中值滤波法,并显示它的频谱图和直方图。
g=medfilt2(g,[3,3]);
(3)利用频域滤波,去除周期噪声。
先转化成double型,进行傅里叶变换,再转化成数据矩阵,最后利用低通滤波去除周期噪声。
G=double(g);
%转化double
G=fft2(G);
G=fftshift(G);
[M,N]=size(G);
nn=2;
d0=25;
m=fix(m/2);
n=fix(n/2);
for
i
=
1
:
M
for
j
N
d
sqrt((i-m)^2+(j-n)^2);
h
1/(1+0.414*(d/d0)^(2*nn));
%
计算低通滤波器传递函数
result(i,j)
h
*
G(i,j);
end
end
(4)计算均方误差评估去噪效果。
[m
n]=size(p);
l=f-p;
he=sum(sum(l));
avg=he/(m*n);
k=l-avg;
result1=(sum(sum(k.^2)))/(m*n);
if
result1==0
disp('
dog图均方误差'
);
result2=0
else
result2=sqrt(result1)
3、算法实现
f=imread('
C:
\dogOriginal.bmp'
g=imread('
\dogDistorted.bmp'
f1=double(f);
f2=fft2(f1);
f2=fftshift(f2);
g1=double(g);
g2=fft2(g1);
g2=fftshift(g2);
g3=medfilt2(g,[3,3]);
%3*3模板中值滤波去除随机噪声
g4=double(g3);
F1=fft2(g3);
F1=fftshift(F1);
G=F1;
%低通滤波
nn=2;
m=fix(M/2);
n=fix(N/2);
fori=1:
M
forj=1:
N
d=sqrt((i-m)^2+(j-n)^2);
h=1/(1+0.414*(d/d0)^(2*nn));
%h=1/(1+(d/d0)^(2*nn));
%备用
G(i,j)=h*G(i,j);
end
p=uint8(real(ifft2(ifftshift(G))));
subplot(341);
imshow(f),title('
原图'
subplot(345);
imshow(log(abs(f2)),[]),title('
频谱'
subplot(349);
imhist(f),title('
subplot(342);
imshow(g),title('
噪声'
subplot(346);
imshow(log(abs(g2)),[]),title('
'
subplot(3,4,10);
imhist(g),title('
subplot(343);
imshow(g3),title('
去随机噪声'
subplot(347);
imshow(log(abs(F1)),[]),title('
subplot(3,4,11);
imhist(g3),title('
subplot(344);
imshow(p,[]),title('
去噪'
subplot(348);
imshow(log(abs(G)),[]),title('
subplot(3,4,12);
imhist(p),title('
[m,n]=size(p);
ifresult1==0
),result2=0
else
),result2=sqrt(result1)
4、运行结果
5、认识分析
去噪后图像模糊,同时尝试了直方图均衡化,效果并不理想;
d0根据误差调整方便简单;
中值滤波简单好用√
参考文献:
[1]全红艳、曹桂涛,数字图像处理原理与实现方法,机械工业出版社,2013
[2]胡晓军、徐飞,MATLAB应用图像处理,2010
图像处理技术应用实践—课程设计3
图像增强分割:
有一幅包含不同大小的种子图案的扫描图像(如下图所示),每个包含了种子的图像区域称之为感兴趣区域(regionsofinterest—ROI)。
要求:
1、设计一套算法提取源图像中的所有ROI,并计算每一个ROI的大小(大小为包含多少个像素,如包含20个像素,则大小为20)。
提示:
每一个ROI为一个连通集合。
2、撰写完整的科技报告(形式类似科技论文)表述自己的算法设计,算法实现与计算结果。
2、增强分割算法
2.1问题分析
(1)首先题目所给的图为彩色图,应该先将其转化成灰度图,再对其进行处理;
(2)分析题目可知首先要将种子所覆盖的大概区域求出来,可以将种子存在的地方检测出来并用特定灰度标记,方便之后统计像素数;
(3)要检测位置在灰度图中很难实现,可以将图像二值化,在二值化图像中值为0的地方进行标记。
2.2算法设计
(1)读图并灰度和二值化:
I=imread('
D:
\seed.bmp'
f=rgb2gray(I);
j=im2bw(f);
j2=f;
(2)检测ROI位置并标记:
首先建立一个白板:
[M,N]=size(j2);
forx=1:
fory=1:
j2(x,y)=255;
之后开始标记ROI位置,以第一行第一个为例:
forx=40:
70%1
fory=100:
150
if(j(x,y)==0)
j2(x,y)=1;
这里的40,70可以先将二值图像和其坐标轴显示出来,记录ROI所在的大概位置;
第一个用1标记;
%坐标轴显示可以用axison指令
按此方法,可以实现37个ROI的标记,用1~37灰度分别标记。
(3)统计像素数:
A=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37];
C=hist(A(:
),unique(A));
fori=1:
37
ifj2(x,y)==A(i)
C(i)=C(i)+1;
End
C数组即储存A中像素个数
(4)最后显示各个图像和最后像素数的数组
figure
(1);
imshow(j2,[]);
figure
(2);
Imshow(j);
axison;
C
2.3算法实现
\\seed.bmp'
k=f;
[M,N]=size(k);
k(x,y)=255;
%第一行
70
k(x,y)=1;
%第二行
forx=80:
110
160
k(x,y)=2;
fory=180:
230
k(x,y)=3;
fory=240:
300
k(x,y)=4;
forx=120:
155
k(x,y)=5;
k(x,y)=6;
k(x,y)=7;
forx=160:
200
k(x,y)=8;
k(x,y)=9;
k(x,y)=10;
fory=310:
375
k(x,y)=11;
forx=205:
240
k(x,y)=12;
k(x,y)=13;
k(x,y)=14;
k(x,y)=15;
forx=250:
285
k(x,y)=16;
k(x,y)=17;
k(x,y)=18;
k(x,y)=19;
forx=290:
328
k(x,y)=20;
k(x,y)=21;
k(x,y)=22;
k(x,y)=23;
forx=335:
370
k(x,y)=24;
k(x,y)=25;
k(x,y)=26;
k(x,y)=27;
forx=375:
415
k(x,y)=28;
k(x,y)=29;
k(x,y)=30;
k(x,y)=31;
fory=400:
440
k(x,y)=32;
forx=420:
450
k(x,y)=33;
k(x,y)=34;
k(x,y)=35;
fory=320:
k(x,y)=36;
k(x,y)=37;
ifk(x,y)==A(i)
imshow(k,[]);
imshow(j);
灰度图像
二值化图像(带坐标)
标记ROI后的图像
统计的像素数
3、认识分析
标记ROI位置的时候要尽量精确,否则会有几像素值的误差,甚至还会标记到不必要的地方;
最后基本达到要求。