【五】空间域图像增强
1 空间域增强基础
空间域增强是对图像的一个邻域,用滤波、平滑、锐化等方法,从而增强图像。
2 空间域滤波
滤波就是将信号中特定波段频率滤除,常用傅里叶变换及其逆变换等实现。
具体过程就是取一个方形模板(一般多是3*3),逐点对图像进行乘积(模板上的点乘图像上对应的点再求和),对于边界上的点,有三种常用策略:(1)收缩处理范围;(2)使用常数填充;(3)使用复制像素。
卷积是一种特殊的滤波过程,区别在模板与对应的点相乘之前,需要先围绕中心点旋转180度。而相关就是最普通的滤波。
Matlab实现
f= imread('pout.tif');
w = [1 1 1; 1 1 1; 1 1 1] / 9;%滤波模板(3*3)
g = imfilter(f, w, 'corr', 'replicate');%相关滤波,边界采用最邻近填充
subplot(1,2,1),imshow(f);
title('滤波前图像');
subplot(1,2,2),imshow(g);
title('滤波后图像');
也可以用fspecial函数创建预定义的二维滤波器。
3 图像平滑
图像平滑可以用来减小和抑制噪声,一般可以用邻域平均达到平滑效果。
3.1 平均平滑
平滑的原理是用模板滤波时把单独噪点的值改为邻域的加权平均值,从而达到平滑的效果。
Matlab实现
I = imread('baby_noise.bmp');
figure,imshow(I);
h3 = fspecial('average',3);%3*3平均模板
I3 = imfilter(I,h3,'corr','replicate');
figure,imshow(I3);
h5 = fspecial('average',5);%5*5平均模板
I5 = imfilter(I,h5,'corr','replicate');
figure,imshow(I5);
h7 = fspecial('average',7);%7*7平均模板
I7 = imfilter(I,h7,'corr','replicate');
figure,imshow(I7);
3.2 高斯平滑
根据高斯函数,模板中心点对应的权重最大,离中心点远的权重变小。
Matlab实现
I = imread('baby_noise.bmp');figure, imshow(I);h3_5 = fspecial('gaussian', 3, 0.5); % sigma=0.5的3*3高斯模板I3_5 = imfilter(I, h3_5); % 高斯平滑figure, imshow(I3_5);h3_8 = fspecial('gaussian', 3, 0.8); % sigma=0.8的3*3高斯模板I3_8 = imfilter(I, h3_8);figure, imshow(I3_8);h3_18 = fspecial('gaussian', 3, 1.8) % sigma=1.8的3*3高斯模板,接近于平均模板I3_18 = imfilter(I, h3_18);figure, imshow(I3_18);h5_8 = fspecial('gaussian', 5, 0.8);I5_8 = imfilter(I, h5_8);figure, imshow(I5_8);imwrite(I5_8, 'baby5_8.bmp');h7_12 = fspecial('gaussian', 7, 1.2);I7_12 = imfilter(I, h7_12);figure, imshow(I7_12);imwrite(I7_12, 'baby7_12.bmp');
3.3 自适应平滑滤波
对每一个像素求周围区域的信息,如果该点判断为噪声就进行平滑。
4 中值滤波
对像素邻域的值进行排序,取中值。重要用于消除椒盐噪声
Matlab实现
I = imread('lena_salt.bmp');figure, imshow(I);J = imnoise(I,'salt & pepper');%添加椒盐噪声figure, imshow(J);w1 = [1 2 1;2 4 2;1 2 1] / 16;J1 = imfilter(J,w1,'corr','replicate'); % 高斯平滑figure, imshow(J1);w2 = [1 1 1;1 1 1;1 1 1] / 9;J2 = imfilter(J,w2,'corr','replicate'); % 平均平滑figure, imshow(J2);J3 = medfilt2(J,[3,3]); % 中值滤波figure, imshow(J3);
改进的中值滤波:通过判断是否是该像素邻域的极值,如果是就按一般中值滤波处理,如果不是就不处理。
5 图像锐化
图像锐化可以使模糊的图像变得清晰起来。
原理跟平滑类似,但却是通过其导数实现的。
5.1 基于一阶导数的梯度算子
5.1.1 Robert交叉梯度
这个用于增强接近+45°和-45°的部分。
Matlab实现
I = imread('bacteria.bmp');figure, imshow(I);w1 = [-1 0;0 1];w2 = [0 -1;1 0];G1 = imfilter(I,w1,'corr','replicate');G2 = imfilter(I,w2,'corr','replicate');G = abs(G1) + abs(G2);%计算Robert梯度figure, imshow(G,[]);figure, imshow(abs(G1),[]);figure, imshow(abs(G2),[]);
5.1.2 Soble梯度
因为我们滤波常用奇数尺寸的模板,因而一种Sobel梯度常用于此。
Matlab实现
I = imread('bacteria.bmp'); w1 = fspecial('sobel');w2 = w1';G1 = imfilter(I,w1);G2 = imfilter(I,w2);G = abs(G1) + abs(G2);%计算Robert梯度figure, imshow(G1,[]);figure, imshow(G2,[]);figure, imshow(G,[]);
可以利用Matlab梯度函数gradient计算Sobel梯度。
5.2 基于二阶微分的拉普拉斯算子
有正负值相同结果的模板;有在旋转90°的条件下,这个模板对于图像先旋转后滤波还是先滤波后旋转都是同样的结果;也有旋转45°不变的模板;有根据中心点的距离给予不同权重的模板。
Matlab实现
I = imread('bacteria.bmp');I = double(I);w1 = [0 -1 0;-1 4 -1;0 -1 0]; %w1模板L1 = imfilter(I,w1,'corr','replicate');w3 = [-1 -1 -1;-1 8 -1;-1 -1 -1]; %w3模板L3 = imfilter(I,w2,'corr','replicate');w5 = [1 4 1;4 -20 4;1 4 1]; %w5模板L5 = imfilter(I,w3,'corr','replicate');figure;subplot(1,4,1),imshow(I);title('原图像');subplot(1,4,2),imshow(abs(L1),[]);title('w1模板锐化');subplot(1,4,3),imshow(abs(L3),[]);title('w3模板锐化');subplot(1,4,4),imshow(abs(L5),[]);title('w5模板锐化');
5.3 一阶和二阶导数锐化对比
1.一阶导数通常会产生较宽的边缘。
2.二阶导数对于阶跃性边缘中心产生零交叉,二对于屋顶状边缘,二阶导数取极值。
3.二阶导数对细节有较强的响应,如细线和孤立噪声点。
5.4 高提升滤波
一阶和二阶滤波都会把原图像平滑区域的灰度信息丢失。高提升滤波的图像是把原图像和锐化图像按比例混合,达到理想效果。
5.5 高斯-拉普拉斯变换
锐化容易把噪声也增强了,所以可以先把有噪声的图像先平滑滤波,再进行锐化增强边缘和细节。
Matlab实现
I = imread('babyNew.bmp');Id = double(I);%滤波前转化为双精度型h_lap = [-1 -1 -1; -1 8 -1; -1 -1 -1];%拉普拉斯算子I_lap = imfilter(Id,h_lap,'corr','replicate');%Laplacian锐化h_log = fspecial('log',5,0.5);%大小为5,sigma=0.5的LoG算子I_log = imfilter(Id,h_log,'corr','replicate');h_log2 = fspecial('log',5,2);%大小为5,sigma=0.5的LoG算子I_log2 = imfilter(Id,h_log2,'corr','replicate');figure;subplot(1,4,1),imshow(I);title('原图像');subplot(1,4,2),imshow(abs(L1),[]);title('Laplacian锐化图像');subplot(1,4,3),imshow(abs(L3),[]);title('LoG处理后图像,σ=0.5');subplot(1,4,4),imshow(abs(L5),[]);title('LoG处理后图像,σ=2');
【五】空间域图像增强相关推荐
- 循序渐进之(五)空间域图像增强之自适应直方图均衡化(AHE)
循序渐进之(五)空间域图像增强之自适应直方图均衡化(AHE) 文字摘自:对比度受限的自适应直方图均衡化(CLAHE) 直方图均衡化(HE)是一种很常用的直方图类方法,基本思想是通过图像的灰度分布直方图 ...
- 数字图像处理——第三章 空间域图像增强(灰度变换和直方图处理)
文章目录 空间域图像增强 1. 背景知识 2. 基本灰度变换 2.1 图像反转 2.2 对数变换 2.3 幂次变换 2.4 分段线性变换函数 2.4.1 对比拉伸 2.4.2 灰度切割 2.4.3 位 ...
- 【OpenCV 例程200篇】67. 空间域图像增强的综合应用
[OpenCV 例程200篇]67. 空间域图像增强的综合应用 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 5. ...
- 图像处理基本算法之空间域图像增强
图像增强技术根据增强处理过程所在的空间不同,可分为基于频域的算法和基于空域的算法两大类.基于频域的算法是在图像的某种变换域内对图像的变换系数值进行某种修正,是一种间接增强的算法,把图像看成一种二维信号 ...
- 数字图像处理系列(二)---空间域图像增强-点运算
chapter2 空间域图像增强(点增强) 1.图像增强的基本概念 在不考虑图像降质的情况下,通过经验和试探的方法,把图像感兴趣的部分进行选择性突出,而把不在意的部分进行压制,从而得到我们想要的信息. ...
- 数字图像处理——第三章 空间域图像增强(空间滤波)
文章目录 1. 空间滤波基础 2. 线性滤波器 2.1 平滑空间滤波器 2.2 锐化空间滤波器 2.2.1 基于一阶微分的图像增强--梯度法 2.2.2 基于二阶微分的图像增强--拉普拉斯算子 3. ...
- 空间域图像增强:卷积和空间域滤波
1.什么是卷积? 卷积:数学中关于两个函数的一种无穷积分运算,是通过两个函数f 和g 生成第三个函数的一种数学算子,表征函数f 经过翻转和平移与g 的重叠部分的累积. 2.什么是空间卷积? 线性空间滤 ...
- 数字图像处理-空间域图像增强(一)(图像反转,对数变换,幂次变换、分段线性变换)
空间域增强的第一部分:图像反转,对数变换,幂次变换.分段线性变换 (s:现点值,r: 原点值) 图像反转: 这个无需多说,就是把黑变白,白变黑,拿八位灰度图像来说 表达式:s=255-r 作用:看清暗 ...
- 数字图像处理之空间域图像增强
滤波过程就是在图像f(x,y)中逐点移动模板(即滤波器),使模板中心和点(x,y)重合,滤波器在每一点的响应是根据模板的具体内容并通过预先定义的关系计算的. 将图像的模板在图像中逐像素移动,并对每个像 ...
最新文章
- # Writing your-first Django-app-part 4-simple-form
- js 拉勾网效果_Node.js 中实践基于 Redis 的分布式锁实现
- java数组删除数据_Java 数组 之 一维数组 删除 元素
- 10个CSS和jQuery的加载中(loading)动画效果实现
- linux查看vtk版本,vtk在linux下的安装(12月8日更新)
- 北京计算机组织专家对,全球顶级专家齐聚北京 探讨计算机产业“大挑战”
- Bellman-Ford算法 - 有向图单源最短路径
- GIS教程-空间分析之水文分析
- 隐藏 element-ui上传照片显示的加号盒子
- leetcode 14天算法入门 C语言实现
- word文档如何画线条流程图_如何在WORD中画流程图
- [乐意黎原创] 2018年度CSDN博客排名前一百五十强
- Java课程设计答辩之感想
- jena 查询 java_Jena搭建SPARQL查询RDF数据
- 训练CV模型新思路来了:用NLP大火的Prompt替代微调,性能全面提升
- 多人网络(Valve开发文档翻译[起源引擎])(一)
- 量子纠缠的超距作用,超光速是假象
- 美国计算机视觉专业排名,你了解美国计算机视觉专业吗
- 浅谈欧拉定理及其扩展
- 环信IM SDK使用(四):环信会话列表实现及相关接口介绍