南京信息工程大学 实验(实习)报告
实验(实习)名称 图像锐化算法实现 实验(实习)日期 得分 指导教师 系 计算机系 专业 软件工程 年级 三 班次 3 姓名 学号 实验目的:
1.了解图像锐化的目的和意义,巩固所学的图像锐化的理论知识和相关算法; 2.掌握微分算子对图像锐化的方法; 3.熟练掌握空域中常用的锐化滤波器;
4.利用MATLAB 程序进行图像锐化(要求:不得调用Matlab 自带的图像函数,但可以调用其它数学函数),观察图像锐化的效果。 实验内容:
1. 读入一幅灰度图像
2. 分别利用Roberts 、Prewitt 和Sobel 边缘检测算子,对一幅灰度数字图像(cameraman.tif )进行边缘检测,显示处理前图像和检测的边缘图
3. 根据获得的梯度图,分别采用5种锐化输出处理方式,显示锐化输出前后的图像实验要求: 4. 用Matlab 语言进行编程,实现上述功能,并尽量使得程序具有通用性,3种算子3个.m 文件。 撰写实验报告并附上所用程序和结果。 (1). clear;clc; f=imread('cameraman.tif'); My=[1,-2,1;0,0,0;1,-2,1]; Mx=[-1,0,1;-2,0,2;-1,0,1];
f = int8(f); Mx = int8(Mx); My = int8(My); T=8;g1=f;g2=f;g3=f;g4=f;g5=f; [M N]=size(f); for x=2:M-1 for y=2:N-1
a=f(x-1:x+1,y-1:y+1); a = int8(a); gx1 = (a.*Mx) ; fx1 = sum(gx1(:)); gy1= (a.*My); fy1 = sum(gy1(:)); grad=abs(fx1)+abs(fy1); g1(x,y)=grad;
(2).
clear;clc;
f=imread('cameraman.tif'); Mx=[-1,-1,-1;0,0,0;1,1,1]; My=[-1,0,1;-1,0,1;-1,0,1];
f = int8(f); Mx = int8(Mx); My = int8(My); T=8;g1=f;g2=f;g3=f;g4=f;g5=f; [M N]=size(f); for x=2:M-1 for y=2:N-1
a=f(x-1:x+1,y-1:y+1);
if grad>=T g2(x,y)=grad; g3(x,y)=255; g4(x,y)=grad; g5(x,y)=255; else
g4(x,y)=0; g5(x,y)=0; end end end
subplot(231),imshow(f,[]); subplot(232),imshow(g1,[]); subplot(233),imshow(g2,[]); subplot(234),imshow(g3,[]); subplot(235),imshow(g4,[]); subplot(236),imshow(g5,[]);
a = int8(a); gx1 = (a.*Mx) ; fx1 = sum(gx1(:)); gy1= (a.*My); fy1 = sum(gy1(:)); grad=abs(fx1)+abs(fy1); g1(x,y)=grad; if grad>=T g2(x,y)=grad; g3(x,y)=255;
g4(x,y)=grad; g5(x,y)=255; else
g4(x,y)=0; g5(x,y)=0; end end (3) clear;clc;
f=imread('cameraman.tif'); Mx=[-1,0;0,1]; My=[0,-1;1,0];
f = int8(f); Mx = int8(Mx); My = int8(My); T=8; g1=f; g2=f; g3=f; g4=f; g5=f;
[M N]=size(f); for x=1:M-1 for y=1:N-1
a=f(x:x+1,y:y+1); a = int8(a); gx1 = (a.*Mx) ; fx1 = sum(gx1(:)); gy1= (a.*My); fy1 = sum(gy1(:)); grad=abs(fx1)+abs(fy1); g1(x,y)=grad; if grad>=T g2(x,y)=grad; g3(x,y)=255; g4(x,y)=grad; g5(x,y)=255; else
end
subplot(231),imshow(f,[]); subplot(232),imshow(g1,[]); subplot(233),imshow(g2,[]); subplot(234),imshow(g3,[]); subplot(235),imshow(g4,[]); subplot(236),imshow(g5,[]); g4(x,y)=0; g5(x,y)=0; end end end
subplot(231),imshow(f,[]); subplot(232),imshow(g1,[]); subplot(233),imshow(g2,[]); subplot(234),imshow(g3,[]); subplot(235),imshow(g4,[]);
subplot(236),imshow(g5,[]);
南京信息工程大学 实验(实习)报告
实验(实习)名称 图像锐化算法实现 实验(实习)日期 得分 指导教师 系 计算机系 专业 软件工程 年级 三 班次 3 姓名 学号 实验目的:
1.了解图像锐化的目的和意义,巩固所学的图像锐化的理论知识和相关算法; 2.掌握微分算子对图像锐化的方法; 3.熟练掌握空域中常用的锐化滤波器;
4.利用MATLAB 程序进行图像锐化(要求:不得调用Matlab 自带的图像函数,但可以调用其它数学函数),观察图像锐化的效果。 实验内容:
1. 读入一幅灰度图像
2. 分别利用Roberts 、Prewitt 和Sobel 边缘检测算子,对一幅灰度数字图像(cameraman.tif )进行边缘检测,显示处理前图像和检测的边缘图
3. 根据获得的梯度图,分别采用5种锐化输出处理方式,显示锐化输出前后的图像实验要求: 4. 用Matlab 语言进行编程,实现上述功能,并尽量使得程序具有通用性,3种算子3个.m 文件。 撰写实验报告并附上所用程序和结果。 (1). clear;clc; f=imread('cameraman.tif'); My=[1,-2,1;0,0,0;1,-2,1]; Mx=[-1,0,1;-2,0,2;-1,0,1];
f = int8(f); Mx = int8(Mx); My = int8(My); T=8;g1=f;g2=f;g3=f;g4=f;g5=f; [M N]=size(f); for x=2:M-1 for y=2:N-1
a=f(x-1:x+1,y-1:y+1); a = int8(a); gx1 = (a.*Mx) ; fx1 = sum(gx1(:)); gy1= (a.*My); fy1 = sum(gy1(:)); grad=abs(fx1)+abs(fy1); g1(x,y)=grad;
(2).
clear;clc;
f=imread('cameraman.tif'); Mx=[-1,-1,-1;0,0,0;1,1,1]; My=[-1,0,1;-1,0,1;-1,0,1];
f = int8(f); Mx = int8(Mx); My = int8(My); T=8;g1=f;g2=f;g3=f;g4=f;g5=f; [M N]=size(f); for x=2:M-1 for y=2:N-1
a=f(x-1:x+1,y-1:y+1);
if grad>=T g2(x,y)=grad; g3(x,y)=255; g4(x,y)=grad; g5(x,y)=255; else
g4(x,y)=0; g5(x,y)=0; end end end
subplot(231),imshow(f,[]); subplot(232),imshow(g1,[]); subplot(233),imshow(g2,[]); subplot(234),imshow(g3,[]); subplot(235),imshow(g4,[]); subplot(236),imshow(g5,[]);
a = int8(a); gx1 = (a.*Mx) ; fx1 = sum(gx1(:)); gy1= (a.*My); fy1 = sum(gy1(:)); grad=abs(fx1)+abs(fy1); g1(x,y)=grad; if grad>=T g2(x,y)=grad; g3(x,y)=255;
g4(x,y)=grad; g5(x,y)=255; else
g4(x,y)=0; g5(x,y)=0; end end (3) clear;clc;
f=imread('cameraman.tif'); Mx=[-1,0;0,1]; My=[0,-1;1,0];
f = int8(f); Mx = int8(Mx); My = int8(My); T=8; g1=f; g2=f; g3=f; g4=f; g5=f;
[M N]=size(f); for x=1:M-1 for y=1:N-1
a=f(x:x+1,y:y+1); a = int8(a); gx1 = (a.*Mx) ; fx1 = sum(gx1(:)); gy1= (a.*My); fy1 = sum(gy1(:)); grad=abs(fx1)+abs(fy1); g1(x,y)=grad; if grad>=T g2(x,y)=grad; g3(x,y)=255; g4(x,y)=grad; g5(x,y)=255; else
end
subplot(231),imshow(f,[]); subplot(232),imshow(g1,[]); subplot(233),imshow(g2,[]); subplot(234),imshow(g3,[]); subplot(235),imshow(g4,[]); subplot(236),imshow(g5,[]); g4(x,y)=0; g5(x,y)=0; end end end
subplot(231),imshow(f,[]); subplot(232),imshow(g1,[]); subplot(233),imshow(g2,[]); subplot(234),imshow(g3,[]); subplot(235),imshow(g4,[]);
subplot(236),imshow(g5,[]);