空间域锐化—梯度锐化法
二○一三~二○一四学年第一学期
电子信息工程系
实验报告
班级:电子信息工程2010级1002班姓名:方之昊
学号:201012135050
课程名称:图像处理实验
指导教师:朱磊
空间域锐化—梯度锐化法
一、实验目的
(1)掌握基本的空间域锐化方法,观察图像增强的效果,加深理解;
(2)了解不同类型梯度算子的特性;
二、实验内容
(1)空间域锐化
三、实验要求
(1)用matlab语言进行仿真实验;
(2)递交实验报告,要求给出实验原理、源程序实验结果及分析。四、实验图像
五、具体实验内容及要求
1.频域平滑实验内容
(1)读入原图像bridge.gif并显示;
(2)采用sobel算子对图像进行处理,并显示结果;
(3)尝试采用其他锐化模板进行处理
1.采用Roberts算子
I=imread('C:\图像\bridge.gif');
subplot(2,2,1),imshow(I)
title('原始图像')
hx=[-1;1];%生成Sobel垂直梯度模板
hy=hx';%生成Roberts水平梯度模板gradx=filter2(hx,I,'same');
gradx=abs(gradx);%计算图像的Roberts垂直梯度subplot(2,2,2),imshow(gradx,[])
title('图像的Roberts垂直梯度')
grady=filter2(hy,I,'same');
grady=abs(grady);%计算图像的Roberts水平梯度subplot(2,2,3),imshow(grady,[]);
title('图像的Roberts水平梯度');
grad=gradx+grady;%得到图像的Roberts梯度
subplot(2,2,4),imshow(grad,[]);
title('图像的Roberts梯度');
原始图像图像的Roberts垂直梯度
图像的Roberts水平梯度图像的Roberts梯度
2.采用Sobel算子
I=imread('C:\图像\bridge.gif');
subplot(2,2,1),imshow(I)
title('原始图像')
hx=[-1-2-1;000;121];%生成Sobel垂直梯度模板
hy=hx';%生成Sobel水平梯度模板gradx=filter2(hx,I,'same');
gradx=abs(gradx);%计算图像的Sobel垂直梯度
subplot(2,2,2),imshow(gradx,[])
title('图像的Sobel垂直梯度')
grady=filter2(hy,I,'same');
grady=abs(grady);%计算图像的Sobel水平梯度
subplot(2,2,3),imshow(grady,[]);
title('图像的Sobel水平梯度');
grad=gradx+grady;%得到图像的Sobel梯度
subplot(2,2,4),imshow(grad,[]);
title('图像的Sobel梯度');
图像的Sobel水平梯度图像的Sobel梯度
3.采用Prewitt算子
I=imread('C:\图像\bridge.gif');
subplot(2,2,1),imshow(I)
title('原始图像')
hx=[-1-1-1;000;111];%生成Prewitt垂直梯度模板
hy=hx';%生成Prewitt水平梯度模板gradx=filter2(hx,I,'same');
gradx=abs(gradx);%计算图像的Prewitt垂直梯度subplot(2,2,2),imshow(gradx,[])
title('图像的Prewitt垂直梯度')
grady=filter2(hy,I,'same');
grady=abs(grady);%计算图像的Prewitt水平梯度subplot(2,2,3),imshow(grady,[]);
title('图像的Prewitt水平梯度');
grad=gradx+grady;%得到图像的Prewitt梯度
subplot(2,2,4),imshow(grad,[]);
title('图像的Prewitt梯度');
图像的Prewitt水平梯度图像的Prewitt梯度
4.采用Laplacia算子
I=imread('C:\图像\bridge.gif');
subplot(2,2,1),imshow(I)
title('原始图像')
hx=[011;1-41;010];%生成Laplacia垂直梯度模板
hy=hx';%生成Laplacia水平梯度模板gradx=filter2(hx,I,'same');
gradx=abs(gradx);%计算图像的Laplacia垂直梯度subplot(2,2,2),imshow(gradx,[])
title('图像的Laplacian垂直梯度')
grady=filter2(hy,I,'same');
grady=abs(grady);%计算图像的Laplacia水平梯度subplot(2,2,3),imshow(grady,[]);
title('图像的Laplacia水平梯度');
grad=gradx+grady;%得到图像的Laplacia梯度
subplot(2,2,4),imshow(grad,[]);
title('图像的Laplacia梯度');
图像的Laplacia水平梯度图像的Laplacia梯度
实验二频域图像增强
一、实验目的
(1)掌握基本的频域图像增强方法,观察图像增强的效果,加深理解;
(2)了解不同类型频域滤波器的特性;
(3)了解滤波器的截止频率对滤波效果的影响。
二、实验内容
(1)频率域平滑
(2)频率域锐化
三、实验要求
(1)用matlab语言进行仿真实验;
(2)递交实验报告,要求给出实验原理、源程序、实验结果及分析。
四、实验图像
五、具体实验内容及要求
1.频域平滑实验内容
(1)读入原图像test.tif并显示;
(2)采用理想低通滤波器对图像进行处理,并显示结果;
(3)采用二阶巴特沃斯低通滤波器对图像进行处理,并显示结果。
要求:
(1)观察截止频率分别为15、30、80时对滤波结果的影响。
(1.截止频率为15
I=imread('C:\图像\test.tif');
subplot(3,1,1),imshow(I)
title('原始图像')
f=double(I);
g=fft2(f);%fft2函数用于计算图像的快速傅立叶变换
g=fftshift(g);%fftshift可以用于调整fft2的输出结果,将变换后的图像频谱中心从矩阵的原点移到矩阵的中心。
[M,N]=size(g);
n=2;
d0=15;%截止频率设为15
m0=fix(M/2);
n0=fix(N/2);
for i=1:M
for j=1:N
d=sqrt((i-m0)^2+(j-n0)^2);
h=1/(1+(d/d0)^(2*n));%计算二阶巴特沃斯低通滤波器的传递函数
result1(i,j)=h*g(i,j);%进行巴特沃斯低通滤波
if d>15%进行理想低通滤波
result2(i,j)=0;
else
result2(i,j)=g(i,j);
end
end
end
result1=ifftshift(result1);
J1=ifft2(result1);
X1=uint8(real(J1));
subplot(3,1,2),imshow(X1)
title('截止频率为15二阶巴特沃斯低通滤波图像')
result2=ifftshift(result2);
J2=ifft2(result2);
X2=uint8(real(J2));
subplot(3,1,3),imshow(X2)
title('截止频率为15理想低通滤波图像')
原始图像
截止频率为15二阶巴特沃斯低通滤波图像
截止频率为15理想低通滤波图像
2.截止频率为30
I=imread('C:\图像\test.tif');
subplot(3,1,1),imshow(I)
title('原始图像')
f=double(I);
g=fft2(f);%fft2函数用于计算图像的快速傅立叶变换
g=fftshift(g);%fftshift可以用于调整fft2的输出结果,将变换后的图像频谱中心从矩阵的原点移到矩阵的中心。
[M,N]=size(g);
n=2;
d0=30;%截止频率设为30
m0=fix(M/2);
n0=fix(N/2);
for i=1:M
for j=1:N
d=sqrt((i-m0)^2+(j-n0)^2);
h=1/(1+(d/d0)^(2*n));%计算二阶巴特沃斯低通滤波器的传递函数
result1(i,j)=h*g(i,j);%进行巴特沃斯低通滤波
if d>30%进行理想低通滤波
result2(i,j)=0;
else
result2(i,j)=g(i,j);
end
end
end
result1=ifftshift(result1);
J1=ifft2(result1);
X1=uint8(real(J1));
subplot(3,1,2),imshow(X1)
title('截止频率为30二阶巴特沃斯低通滤波图像')
result2=ifftshift(result2);
J2=ifft2(result2);
X2=uint8(real(J2));
subplot(3,1,3),imshow(X2)
title('截止频率为30理想低通滤波图像')
原始图像
截止频率为30二阶巴特沃斯低通滤波图像
截止频率为30理想低通滤波图像
3.截止频率为80
I=imread('C:\图像\test.tif');
subplot(3,1,1),imshow(I)
title('原始图像')
f=double(I);
g=fft2(f);%fft2函数用于计算图像的快速傅立叶变换
g=fftshift(g);%fftshift可以用于调整fft2的输出结果,将变换后的图像频谱中心
从矩阵的原点移到矩阵的中心。
[M,N]=size(g);
n=2;
d0=80;%截止频率设为80
m0=fix(M/2);
n0=fix(N/2);
for i=1:M
for j=1:N
d=sqrt((i-m0)^2+(j-n0)^2);
h=1/(1+(d/d0)^(2*n));%计算二阶巴特沃斯低通滤波器的传递函数
result1(i,j)=h*g(i,j);%进行巴特沃斯低通滤波
if d>80%进行理想低通滤波
result2(i,j)=0;
else
result2(i,j)=g(i,j);
end
end
end
result1=ifftshift(result1);
J1=ifft2(result1);
X1=uint8(real(J1));
subplot(3,1,2),imshow(X1)
title('截止频率为80二阶巴特沃斯低通滤波图像')
result2=ifftshift(result2);
J2=ifft2(result2);
X2=uint8(real(J2));
subplot(3,1,3),imshow(X2)
title('截止频率为80理想低通滤波图像')
原始图像
截止频率为80二阶巴特沃斯低通滤波图像
截止频率为80理想低通滤波图像
(2)比较理想低通滤波器和巴特沃斯低通滤波器的滤波效果。
实验结果分析:(1)理想的高通滤波器把半径为D0的圆内的所有频率完全衰减掉,却使圆外的所有的频率无损的通过。图像整体变得模糊,边缘和细节比较清晰。(2)巴特沃思高通滤波器和高斯高通滤波器处理后的图像中只显现边缘,边缘的强度不同,而灰度平滑的区域都变暗了。
实验小结:
原始图像中,包含有各种朝向的边缘。各种算子中的垂直模板得到的梯度图,由于梯度方向与边缘走向垂直,所以梯度图对水平边缘有较强的响应,水平部分等细节信息非常清析。由算子中的水平模板得到的梯度图,它对垂直边缘有较强的响应,垂直部分等垂直细节非常清晰。而最后得到的梯度图则把水平和垂直方向的特点结合在一起,水平和垂直细节都非常清晰。
通过横向和纵向比较几幅图像的锐化效果何以很直观的看到集中算子的效果差异,这对于我们以后再从事这方面的工作时如何选择锐化算子是个很好的提示。
matlab 图像的几何变换与彩色处理
实验四、图像的几何变换与彩色处理 一、实验目的 1理解和掌握图像的平移、垂直镜像变换、水平镜像变换、缩放和旋转的原理和应用; 2熟悉图像几何变换的MATLAB操作和基本功能 3 掌握彩色图像处理的基本技术 二、实验步骤 1 启动MATLAB程序,读入图像并对图像文件分别进行平移、垂直镜像变换、水平镜像变换、缩放和旋转操作 %%%%%%平移 >> flowerImg=imread('flower.jpg'); >> se=translate(strel(1),[100 100]); >> img2=imdilate(flowerImg,se); >> subplot(1,2,1); >> imshow(flowerImg); >> subplot(1,2,2); >> imshow(img2);
I1=imread('flower.jpg'); I1=double(I1); H=size(I1); I2(1:H(1),1:H(2),1:H(3))=I1(H(1):-1:1,1:H(2),1:H(3)); I3(1:H(1),1:H(2),1:H(3))=I1(1:H(1),H(2):-1:1,1:H(3)); Subplot(2,2,1); Imshow(uint8(I1)); Title('原图'); Subplot(2,2,2); Imshow(uint8(I3)); Title('水平镜像'); Subplot(2,2,3); Imshow(uint8(I2)); Title('垂直镜像'); img1=imread('flower.jpg'); figure,imshow(img1); %%%%%%缩放 img2=imresize(img1,0.25); figure,imshow(img2); imwrite(img2,'a2.jpg');
图像处理opencv代码
#include "stdafx.h" #include "mymfc.h" #include "mymfcDlg.h" #include "afxdialogex.h" #include
CmymfcDlg::CmymfcDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CmymfcDlg::IDD, pParent) , TheImage(NULL) , rePath(_T("")) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CmymfcDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CmymfcDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_ReadImg, &CmymfcDlg::OnBnClickedReadimg) ON_BN_CLICKED(IDC_EdgeDetect, &CmymfcDlg::OnBnClickedEdgedetect) ON_BN_CLICKED(IDC_Refresh, &CmymfcDlg::OnBnClickedRefresh) ON_BN_CLICKED(IDC_GrayProcess, &CmymfcDlg::OnBnClickedGrayprocess) ON_BN_CLICKED(IDC_Sobel, &CmymfcDlg::OnBnClickedSobel) ON_BN_CLICKED(IDC_Laplace, &CmymfcDlg::OnBnClickedLaplace) ON_BN_CLICKED(IDC_FFT2, &CmymfcDlg::OnBnClickedFft2) ON_BN_CLICKED(IDC_CImage, &CmymfcDlg::OnBnClickedCimage) ON_BN_CLICKED(IDC_Mirror, &CmymfcDlg::OnBnClickedMirror) ON_BN_CLICKED(IDC_CColor, &CmymfcDlg::OnBnClickedCcolor) ON_BN_CLICKED(IDC_MedianBlur, &CmymfcDlg::OnBnClickedMedianblur) ON_BN_CLICKED(IDC_Gaussian, &CmymfcDlg::OnBnClickedGaussian) ON_BN_CLICKED(IDC_BothSide, &CmymfcDlg::OnBnClickedBothside) ON_BN_CLICKED(IDC_Equally, &CmymfcDlg::OnBnClickedEqually) ON_BN_CLICKED(IDC_Corrosion, &CmymfcDlg::OnBnClickedCorrosion) ON_BN_CLICKED(IDC_Dilate, &CmymfcDlg::OnBnClickedDilate) END_MESSAGE_MAP() // CmymfcDlg 消息处理程序 BOOL CmymfcDlg::OnInitDialog() { CDialogEx::OnInitDialog();
laplace(拉普拉斯)锐化matlab程序
laplace(拉普拉斯)锐化matlab程序 部门: xxx 时间: xxx 整理范文,仅供参考,可下载自行编辑