空间滤波(五) 综合运用

本文介绍了使用Sobel算子进行空间滤波的应用,通过MATLAB实现图像处理。展示了原始图像与经过处理(gamma=0.4)后的图像效果,详细分析参照《数字图像处理》第3版第104页。文中提到了Sobel算子的准确性,并建议参考《Learning OpenCV》以获取更精确的Scharr算子计算方法。
摘要由CSDN通过智能技术生成
ori_img=imread('C:\Program Files\MATLAB\R2013a\bin\Original_Images\DIP3E_Original_Images_CH03\Fig0343(a)(skeleton_orig).tif');
stretch_img=intrans(ori_img,'stretch',mean2(im2double(ori_img)),0.9);

w_lap=double([0,1,0;1,-4,1;0,1,0]); %edge_detect   边缘检测  图像锐化,拉普拉斯算子
ori_img=mat2gray(ori_img);
laplace_img=conv2(ori_img,w_lap,'same');
lap_plus_ori_img=mat2gray(ori_img-laplace_img); % 锐化图像
imshow(ori_img),title('ori_img');
figure,imshow(stretch_img),title('stretch img');
figure,imshow(laplace_img,[]),title('laplace img')
figure,imshow(lap_plus_ori_img,[]),title('lap plus ori img')
sobel_v=double([1,2,1;0,0,0;-1,-2,-1]); %Sobel operator 3x3 convolution kernels
% 垂直 Sobel_v   kron([1,0,-1]',[1,2,1])
sob_v_img=conv2(ori_img,sobel_v,'same');
% sob_v_img=mat2gray(sob_v_img);
figure,imshow(sob_v_img,[]),title('sobel vetical img');
sobel_h=double([1,0,-1;2,0,-2;1,0,-1]); %Sobel operator 3x3 convolution kernels
sob_h_img=conv2(ori_img,sobel_h,'same');
% sob_h_img=mat2gray(sob_h_img);
figure,imshow(sob_h_img,[]),title('sobel Hor img');
sob_img=abs(sob_h_img)+abs(sob_v_img);
figure,imshow(sob_img,[]),title('sobel img')  % 归一化
w_aver=double(ones(5)); % 使用5*5 均值滤波器平滑图像  ,均值滤波器是一种线性滤波器,中值滤波器为非线性,在处理医学图像时用线性。
sob_aver_img=conv2(sob_img,w_aver,'same');  % 平滑sobel 算子梯度处理后的图像
figure,imshow(sob_aver_img,[]),title('sob aver img')  % 归一化
sob_aver_multiply_lap_plus_ori_img=mat2gray(sob_aver_img.*lap_plus_ori_img);
figure,imshow(sob_aver_multiply_lap_plus_ori_img,[]),title('sob aver multiply lap plus ori img');  % 归一化锐化图像与sobel 处理后的图像相乘
% 形成的非锐化掩蔽图像
ori_plus_sob_aver_multiply_lap_plus_ori_img=mat2gray(sob_aver_multiply_lap_plus_ori_img+ori_img);
figure,imshow(ori_plus_sob_aver_multiply_lap_plus_ori_img,[]),title('ori plus + sob aver multiply lap plus ori img');
gamma_img=intrans(ori_plus_sob_aver_multiply_lap_plus_ori_img,'gamma',0.4); % 幂律变换 gamma 变换
gamma_img=mat2gray(gamma_img);
figure,imshow(gamma_img,[]),title('gamma img');

第一为处理原图 截图 最后一张为gamma=0.4 时的处理结果 其他图片太多,这里就不上传了

具体分析,请参考 数字图像处理第三版 104 页

%sobel_h=double([-3,0,3;-10,0,10;-3,0,3]);    %更准确
% sobel_v=doubel([-3,-10,-3;0,0,0;3,10,3]);    %更准确
%由于sobel
%是一个近似算符,故总会有误差,这里可以用一个更准确的计算 具体细节请参考learning opencv by
%Bradski and Kaehler  in the OpenCV reference (Scharr)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值