第六章(5至6节) 彩色图像处理
来源:互联网 发布:淘宝云标签网址 编辑:程序博客网 时间:2024/06/05 13:21
- 彩色图像锐化
- 在RGB向量空间直接处理
- 1 采用梯度的彩色边缘检测
1. 彩色图像锐化
用线性空间滤波器锐化一幅RGB彩色图像的基本步骤和第三章学过的差不多,但使用的是锐化滤波器,我们考虑使用的还是拉普拉斯算子锐化图像。
代码如下:
h=imread('C:\Users\sh qian\Desktop\flower.jpg');lapmask=[1 1 1;1 -8 1;1 1 1];filter=imfilter(h,lapmask,'replicate');fen=imsubtract(h,filter);imshow(fen);figure,imshow(h);subplot(1,2,1),imshow(h);title('原图');subplot(1,2,2),imshow(fen);title('经过锐化后的图像');
效果如下:
在使用imfilter时,RGB图像完全可以当做单色图像处理,避免了对分量的拆分和合并,imsubtract函数表示相减,因为锐化重要的一步就是原图像与经过滤波后的图像进行相减。
2. 在RGB向量空间直接处理
2.1 采用梯度的彩色边缘检测
我在书中的附录里找到了实现RGB图像的彩色梯度的函数,我理解的大概意思是,根据传入的(一定是)RGB图像,以及一个Sobel掩膜sh,因为sh是近似于垂直方向的梯度,所以还需要一个水平方向的掩膜sh’。然后对这个RGB图像进行分通道滤波,而且要在垂直和水平方向分别滤波。接下来,就是一系列的数学公式的推导(还得慢慢理解吧),最后计算每个平面的梯度。
colorgrad函数代码如下:
function [VG,A,PRG]=colorgrad(f,T)if ndims(f)~=3 || size(f,3) ~=3 error('Input image must be RGB');endsh=fspecial('sobel');sv=sh';Rx=imfilter(double(f(:,:,1)),sh);Ry=imfilter(double(f(:,:,1)),sv);Gx=imfilter(double(f(:,:,2)),sh);Gy=imfilter(double(f(:,:,2)),sv);Bx=imfilter(double(f(:,:,3)),sh);By=imfilter(double(f(:,:,3)),sv);gxx=Rx.^2+Gx.^2+Bx.^2;gyy=Ry.^2+Gy.^2+By.^2;gxy=Rx.*Ry+Gx.*Gy+Bx.*By;A=0.5*(atan(2*gxy./(gxx-gyy+eps)));G1=0.5*((gxx+gyy)+(gxx-gyy).*cos(2*A)+2*gxy.*sin(2*A));A=A+pi/2;G2=0.5*((gxx+gyy)+(gxx-gyy).*cos(2*A)+2*gxy.*sin(2*A));G1=G1.^0.5;G2=G2.^0.5;VG=mat2gray(max(G1,G2));%计算每个平面的梯度RG=sqrt(Rx.^2+Ry.^2);GG=sqrt(Gx.^2+Gy.^2);BG=sqrt(Bx.^2+By.^2);PRG=mat2gray(RG+GG+BG);if nargin==2 VG=(VG>T).*VG; PRG=(PRG>T).*PRG;end
测试例子
c=imread('tem.jpg');[VG,A,PPG]=colorgrad(c);figure,imshow(VG);figure,imshow(PPG);subplot(2,2,3),imshow(b);title('原图');imhist(PPG,255);imhist(VG,255);title('VG直方图');subplot(2,2,4),imhist(PPG,255);title('PPG直方图');
效果如图:
其实正常情况下PPG图像的水平边缘比VG中的对应边缘更弱,主要原因是红色和绿色平面的梯度产生两个垂直边缘,蓝色平面的梯度产生单个水平边缘。为形成PPG而相加这三个梯度会产生亮度两倍于水平边缘亮度的垂直边缘。
阅读全文
0 0
- 第六章(5至6节) 彩色图像处理
- 第六章(1至4节) 彩色图像处理
- 第六章 彩色图像处理
- 第六章 彩色图像处理
- 彩色图像处理(RGB图像)
- (7)MATLAB彩色图像处理
- 数字图像处理(四) 彩色图像拼接
- 【python图像处理】彩色映射(续篇)
- Matlab彩色图像处理
- 彩色图像处理
- 彩色图像处理
- 彩色图像处理
- 彩色图像处理
- matlab 彩色图像处理
- 彩色图像平滑处理
- 彩色图像处理
- 彩色图像处理总结
- 彩色图像处理
- 将 Spark 中的文本转换为 Parquet 以提升性能
- Spark RDD Actions操作之reduce()
- 搭建Struts2的开发环境
- 掌握Chrome的开发技巧 提高你的开发效率
- Exynos4412 Uboot 移植(一)—— Uboot 编译流程分析
- 第六章(5至6节) 彩色图像处理
- ES常用命令-------------随笔
- ISO8601时间转换
- 面试题7—相关题目(两个队列实现栈)
- 卷积神经网络(CNN)新手指南
- Spring
- 前端自动化构建入门1-什么是前端自动化?
- LeetCode 59. Spiral Matrix II 解题报告
- ajax创建及参数、优缺点分析