区域处理

本文详细介绍了滑动邻域操作在图像处理中的应用,包括使用MATLAB的nlfilter、colfilt函数进行图像的滑动平均、最大值、最小值等处理,并展示了如何通过自定义函数实现多种滑动邻域操作。

文章目录

1.滑动邻域操作

滑动邻域操作每次在一个像素上进行。输出的图像每一个像素都是通过对输入图像某邻域内的像素值采用某种代数运算得到的。中心像素是指输入图像真正要进行处理的像素。如果邻域的行和列都是奇数,则中心像素就是邻域的中心;如果行和列有一列为偶数,那么中心像素将位于中心偏左或偏上方。任意一个邻域矩阵的中心像素的坐标表示为

floor(([m,n]+1)/2

邻域操作的一般算法如下:
(1)选择一个像素
(2)确定该像素的邻域
(3)用一个函数对邻域内的像素进行计算并返回这个标量结果
(4)在输出图像对应的位置填入输入图像邻域中的中心位置
(5)重复计算,遍及每一个像素点
在MATLAB中,nlfilter函数用于滑动邻域操作。其常见的调用方法为

B=nlfilter(A,[m n],fun)

其中,A为输入图像;B为输出图像;m×n为邻域尺寸;fun为运算函数。
colfilt函数用于对图像进行快速邻域操作,该函数的调用方法为

B=colfilt(A,[m n],'sliding',fun)

表示指定’sliding’函数作滑动邻域操作
im2col函数、col2im函数用于对图像进行行列操作,im2col、col2im函数的调用方法为

B=im2col(A,[m n],'sliding')

表示将以图像排成列

B=col2im(A,[m n],[mm, nn],'sliding')

表示将图像进行;列重构处理
除了上述的这些常用的运算函数,还可以使用inline自定义函数。下表列出了常见的运算函数

函数描述函数描述
mean求向量的平均值median求向量的中值
mean2求向量的平均值max求向量的最大值
std求向量的标准差min求向量的最小值
std2求矩阵的标准差var求向量的方差
使用滑动邻域操作对图像进行处理
clear all
close all
i=imread('tire.tif');
fun=@(x)median(x(:));
b=nlfilter(i,[3 3],fun);%使用滑动邻域操作对图像进行处理
subplot(121)
imshow(i)
title('原始图像')
subplot(122)
imshow(b)
title('滑动处理后的图像')

在这里插入图片描述
分别使用平均值、最大值、最小值对图像进行滑动处理

clear all
close all
I=imread('cell.tif');
subplot(221)
imshow(I)
title('原始图像')
I2=uint8(colfilt(I,[5 5],'sliding',@mean));%对图像进行滑动平均处理
subplot(222)
imshow(I2)
title('滑动平均值')
I3=uint8(colfilt(I,[5 5 ],'sliding',@max));%对图像进行滑动最大值处理
subplot(223)
imshow(I3)
title('滑动最大值')
I4=uint8(colfilt(I,[5 5],'sliding',@min));%对图像进行滑动最小值处理
subplot(224)
imshow(I4)
title('滑动最小值')

在这里插入图片描述
指定多种sliding函数作滑动邻域操作

clear all
close all
I=im2double(imread('eight.tif'));
f1=@(x)ones(64,1)*mean(x);
f2=@(x)ones(64,1)*max(x);
f3=@(x)ones(64,1)*min(x);
I1=colfilt(I,[8 8],'distinct',f1);
I2=colfilt(I,[8 8],'distinct',f2);
I3=colfilt(I,[8 8],'distinct',f3);
subplot(221)
imshow(I)
title('原始图像')
subplot(222)
imshow(I1)
title('mean')
subplot(223)
imshow(I2)
title('max')
subplot(224)
imshow(I3)
title('mean')

在这里插入图片描述
用列操作函数对图像实现滑动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值