图像处理课程设计报告书.docx
《图像处理课程设计报告书.docx》由会员分享,可在线阅读,更多相关《图像处理课程设计报告书.docx(23页珍藏版)》请在冰豆网上搜索。
图像处理课程设计报告书
《图像处理技术应用实践》课程设计
题目图像增强算法综合应用
学生姓名韩帅_______
学号***********___
院系计算机与软件学院
专业计算机科学与技术
任课教师范春年____
二O一七年五月
图像处理技术应用实践—课程设计2
1、设计内容
图像增强处理:
设计一套空间域与频率域结合的图像增强算法,处理以下任一组图片中的带噪声图像,去除噪声,提高图像质量。
(1)已知:
噪声为随机噪声和周期噪声混合噪声;
(2)要求:
a)去噪处理后,计算均方误差评估去噪处理后图像的去噪效果
b)撰写完整的科技报告(形式类似科技论文)表述自己的算法设计,算法实现与算法评估过程。
第一组图片:
第二组图片:
2、图像增强算法
2.1问题分析
(1)图片中加入了随机噪声和周期噪声混合噪声。
针对不同的噪声,不同的去噪方法效果不同,因此应该采用不同的去噪方法以达到最好的去噪效果。
(2)随机噪声应在空间域去除,而空域去噪方法中,中值滤波法效果最好。
(3)周期噪声应在频域中消去。
(4)去除噪声后的图像仍然可以改善处理。
(5)均方误差评估去噪处理后图像的去噪效果。
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 = 1 :
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
disp('dog图均方误差');
result2=sqrt(result1)
end
3、算法实现
clear;clc;
f=imread('C:
\dogOriginal.bmp');
g=imread('C:
\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;
[M,N]=size(G);%低通滤波
nn=2;
d0=25;
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
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);
l=f-p;
he=sum(sum(l));
avg=he/(m*n);
k=l-avg;
result1=(sum(sum(k.^2)))/(m*n);
ifresult1==0
disp('dog图均方误差'),result2=0
else
disp('dog图均方误差'),result2=sqrt(result1)
end
4、运行结果
5、认识分析
去噪后图像模糊,同时尝试了直方图均衡化,效果并不理想;d0根据误差调整方便简单;中值滤波简单好用√
参考文献:
[1]全红艳、曹桂涛,数字图像处理原理与实现方法,机械工业出版社,2013
[2]胡晓军、徐飞,MATLAB应用图像处理,2010
图像处理技术应用实践—课程设计3
1、设计内容
图像增强分割:
有一幅包含不同大小的种子图案的扫描图像(如下图所示),每个包含了种子的图像区域称之为感兴趣区域(regionsofinterest—ROI)。
要求:
1、设计一套算法提取源图像中的所有ROI,并计算每一个ROI的大小(大小为包含多少个像素,如包含20个像素,则大小为20)。
提示:
每一个ROI为一个连通集合。
2、撰写完整的科技报告(形式类似科技论文)表述自己的算法设计,算法实现与计算结果。
2、增强分割算法
2.1问题分析
(1)首先题目所给的图为彩色图,应该先将其转化成灰度图,再对其进行处理;
(2)分析题目可知首先要将种子所覆盖的大概区域求出来,可以将种子存在的地方检测出来并用特定灰度标记,方便之后统计像素数;
(3)要检测位置在灰度图中很难实现,可以将图像二值化,在二值化图像中值为0的地方进行标记。
2.2算法设计
(1)读图并灰度和二值化:
clear;clc;
I=imread('D:
\seed.bmp');
f=rgb2gray(I);
j=im2bw(f);j2=f;
(2)检测ROI位置并标记:
首先建立一个白板:
[M,N]=size(j2);
forx=1:
M
fory=1:
N
j2(x,y)=255;
end
end
之后开始标记ROI位置,以第一行第一个为例:
forx=40:
70%1
fory=100:
150
if(j(x,y)==0)
j2(x,y)=1;
end
end
end
这里的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));
forx=1:
M
fory=1:
N
fori=1:
37
ifj2(x,y)==A(i)
C(i)=C(i)+1;
end
end
end
End
C数组即储存A中像素个数
(4)最后显示各个图像和最后像素数的数组
figure
(1);
imshow(j2,[]);
figure
(2);
Imshow(j);
axison;
C
2.3算法实现
clear;clc;
I=imread('D:
\\seed.bmp');
f=rgb2gray(I);
j=im2bw(f);
k=f;
axison;
[M,N]=size(k);
forx=1:
M
fory=1:
N
k(x,y)=255;
end
end
%第一行
forx=40:
70
fory=100:
150
if(j(x,y)==0)
k(x,y)=1;
end
end
end
%第二行
forx=80:
110
fory=100:
160
if(j(x,y)==0)
k(x,y)=2;
end
end
fory=180:
230
if(j(x,y)==0)
k(x,y)=3;
end
end
fory=240:
300
if(j(x,y)==0)
k(x,y)=4;
end
end
end
forx=120:
155
fory=100:
160
if(j(x,y)==0)
k(x,y)=5;
end
end
fory=180:
230
if(j(x,y)==0)
k(x,y)=6;
end
end
fory=240:
300
if(j(x,y)==0)
k(x,y)=7;
end
end
end
forx=160:
200
fory=100:
160
if(j(x,y)==0)
k(x,y)=8;
end
end
fory=180:
230
if(j(x,y)==0)
k(x,y)=9;
end
end
fory=240:
300
if(j(x,y)==0)
k(x,y)=10;
end
end
fory=310:
375
if(j(x,y)==0)
k(x,y)=11;
end
end
end
forx=205:
240
fory=100:
160
if(j(x,y)==0)
k(x,y)=12;
end
end
fory=180:
230
if(j(x,y)==0)
k(x,y)=13;
end
end
fory=240:
300
if(j(x,y)==0)
k(x,y)=14;
end
end
fory=310:
375
if(j(x,y)==0)
k(x,y)=15;
end
end
end
forx=250:
285
fory=100:
160
if(j(x,y)==0)
k(x,y)=16;
end
end
fory=180:
230
if(j(x,y)==0)
k(x,y)=17;
end
end
fory=240:
300
if(j(x,y)==0)
k(x,y)=18;
end
end
fory=310:
375
if(j(x,y)==0)
k(x,y)=19;
end
end
end
forx=290:
328
fory=100:
160
if(j(x,y)==0)
k(x,y)=20;
end
end
fory=180:
230
if(j(x,y)==0)
k(x,y)=21;
end
end
fory=240:
300
if(j(x,y)==0)
k(x,y)=22;
end
end
fory=310:
375
if(j(x,y)==0)
k(x,y)=23;
end
end
end
forx=335:
370
fory=100:
160
if(j(x,y)==0)
k(x,y)=24;
end
end
fory=180:
230
if(j(x,y)==0)
k(x,y)=25;
end
end
fory=240:
300
if(j(x,y)==0)
k(x,y)=26;
end
end
fory=310:
375
if(j(x,y)==0)
k(x,y)=27;
end
end
end
forx=375:
415
fory=100:
160
if(j(x,y)==0)
k(x,y)=28;
end
end
fory=180:
230
if(j(x,y)==0)
k(x,y)=29;
end
end
fory=240:
300
if(j(x,y)==0)
k(x,y)=30;
end
end
fory=310:
375
if(j(x,y)==0)
k(x,y)=31;
end
end
fory=400:
440
if(j(x,y)==0)
k(x,y)=32;
end
end
end
forx=420:
450
fory=100:
160
if(j(x,y)==0)
k(x,y)=33;
end
end
fory=180:
230
if(j(x,y)==0)
k(x,y)=34;
end
end
fory=240:
300
if(j(x,y)==0)
k(x,y)=35;
end
end
fory=320:
375
if(j(x,y)==0)
k(x,y)=36;
end
end
fory=400:
440
if(j(x,y)==0)
k(x,y)=37;
end
end
end
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));
forx=1:
M
fory=1:
N
fori=1:
37
ifk(x,y)==A(i)
C(i)=C(i)+1;
end
end
end
end
figure
(1);
imshow(k,[]);
figure
(2);
imshow(j);
C
灰度图像
二值化图像(带坐标)
标记ROI后的图像
统计的像素数
3、认识分析
标记ROI位置的时候要尽量精确,否则会有几像素值的误差,甚至还会标记到不必要的地方;最后基本达到要求。
参考文献:
[1]全红艳、曹桂涛,数字图像处理原理与实现方法,机械工业出版社,2013
[2]胡晓军、徐飞,MATLAB应用图像处理,2010