空间滤波(五) 综合运用
2014-05-08 12:10
162 查看
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)
相关文章推荐
- 设计模式在综合前置中的运用(三)--建造者模式
- C++11 并发指南九(综合运用: C++11 多线程下生产者消费者模型详解)
- Android 酷炫来袭:制作属于你自己的音频播放器(综合运用MediaPlayer、Service、Broadcast、ListView、SeekBar)
- for+case+find综合运用删除过期数据
- wcf综合运用之:大文件异步断点续传
- 披头氏抠门篇—通道综合运用[2]
- cocos2d-x学习笔记(五)仿真树叶飘落效果的实现(精灵旋转、翻转、钟摆运动等综合运用)
- C++11 并发指南九(综合运用: C++11 多线程下生产者消费者模型详解)
- 综合运用端口匹配、深度数据包检测、流量特征进行P2P流量识别
- set综合运用
- 简单的JSP购物程序(综合运用JavaBean、JDBC、JSP隐含对象,开发一个小型网上购物系统)
- 安卓Button-TextView-EditText综合运用
- 综合运用C语言指针强制转换和回调函数
- JAVA-练习MyShopping实现商品换购 综合运用嵌套if选择结构 switch选择结构 多重if选择 结构实现商品换购功能
- filter和listener综合运用实战_分IP统计访问次数
- 关于触发器、存储过程和DBlink的综合运用 (转)
- oracle 物理视图和同义词的综合运用
- python WSGI+Paste Deployment+oslo.config综合运用
- select标签和map的综合运用小结
- Hibernate综合运用内部留言本(一)