1.colfilt
功能: 列式邻域运算
介绍:
- B = colfilt(A,[m n],block_type,fun)
通过将A的每个m×n块重新排列为临时矩阵的一列,然后将函数fun应用于该矩阵来处理图像A。 - B = colfilt(A,[m n],[mblock nblock],block_type,fun)
将A细分为大小为m X n的区域以节省内存。请注意,使用[mblock nblock]参数时,操作的结果不会更改。例如,如果[mblock nblock]是[3 4],并且每个块的大小是16×16像素,则colfilt将图像细分为大小为48×64像素的区域,并且分别处理每个区域。 - B = colfilt(A,‘indexed’,…)
将A作为索引图像处理,如果A的类是uint8、uint16或logical,则用0填充,否则用1填充。
代码示例:
I = imread('tire.tif');
I2 = uint8(colfilt(I,[5 5],'sliding',@mean));%执行按列筛选,对每个5×5像素邻域调用函数mean
subplot(121);imshow(I);title('Original Image');
subplot(122);imshow(I2);title('Filtered Image')
运行结果:
2.bwperim
功能: 确定图像目标边界
介绍:
- BW2 = bwperim(BW1)返回仅包含输入图像BW1中目标像素边界的二值图像BW2。其中,一个像素确定为边界像素的条件是其值非0,且它的邻域中至少有一个像素值为0。
- BW2 = bwperim(BW1,conn)返回仅包含输入图像BW1中目标像素边界的二值图像BW2。参量conn为连通数,可以为4、8、6、18或26。n=4或n=8分别表示二维图像中采用的4-连通和8-连通,n=6、18或26分别表示三维图像中采用的6-连通、18-连通和26-连通。
代码示例:
bw1 = imread('circbw.tif');
subplot(221);imshow(bw1);
bw2 = bwperim(bw1);
subplot(222);imshow(bw2);
bw3 = bwperim(bw1,4);
subplot(223);imshow(bw3);
运行结果:
3.bwlabel
功能: 标注二值图像中的目标物体
介绍:
- L = bwlabel(BW,n) 标注二值图像BW中的目标物体,返回标识矩阵L。参量L与BW的给维数相同。参量n表示连通数,可为4或8,默认n=8。
- [L,num] = bwlabel(BW,n) 标注二值图像BW中的目标物体,返回标识矩阵L和 BW中目标物体的数量num。
代码如下(示例):
bw = imread('text.png');
L = bwlabel(bw,4);
运行结果:
代码如下(示例):
bw = imread('text.png');
[L,num] = bwlabel(bw,4)
运行结果:
4.bwareaopen
功能: 移除小目标
介绍:
- BW2= bwareaopen(BW,P) 移除二值图像BW中所有少于P个像素的连通元素,生成另一个二值图像BW2。默认情况下,bwareaopen采用8连通邻域(二维图像)或26连通邻域(三维图像)。对于高维图像,连通数为conndef(ndims(BW),‘maximal’)
- BW2 = bwareaopen(BW,P,conn) 指定运算时的连通
数为conn。其它参量及结果同上。
代码如下(示例):
I = imread('text.png');
subplot(221);imshow(I);
BW = bwareaopen(I,10);
subplot(222);imshow(BW);
BW2 = bwareaopen(I,10,26);
subplot(223);imshow(BW2);
运行结果: