matlab的一些关于块分类的函数~~~
Posted byteH
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab的一些关于块分类的函数~~~相关的知识,希望对你有一定的参考价值。
1. nlfilter(General sliding-neighborhood operations)
B = nlfilter(A, [m n], fun),这是一个其中A是图像[m n]是图像处理区域的矩阵大小,fun是函数句柄,B是函数返回的一个标量。
意为对图像A的每个大小为m*n的patch进行fun函数的操作,patch的取法为滑动(sliding),即patch的中心像素遍历图像的每个点,当取到边界时需要进行边界延拓。fun必须是函数的句柄,可自由定义也可取matlab内置的函数。
例:这个例子是应用中值滤波对图像进行3*3的邻域滑块操作
A = imread(\'cameraman.tif\');
A = im2double(A);
fun = @(x) median(x(:));
B = nlfilter(A,[3 3],fun);
imshow(A), figure, imshow(B)
2.blockproc
不重叠的块运算命令(distinct block processing),调用格式:B = blockproc(A,[M N],fun);
意为对图像A的每个不重叠的大小为m*n的块进行fun函数的操作,级联的结果为B。
fun = @(block_struct) ...
std2(block_struct.data) * ones(size(block_struct.data));
I2 = blockproc(\'moon.tif\',[12 12],fun);
figure;
imshow(\'moon.tif\');
figure;
imshow(I2,[]);
I = imread(\'peppers.png\');
fun = @(block_struct) block_struct.data(:,:,[2 1 3]);
blockproc(I,[200 200],fun,\'Destination\',\'grb_peppers.tif\');
figure;
imshow(\'peppers.png\');
figure;
imshow(\'grb_peppers.tif\');
3. colfilter
调用格式:B = colfilt(A,[m n],block_type,fun)
意为将图像A重排成每列为m*n块拉成一列组成的临时矩阵,对该临时矩阵进行fun函数的操作
I = imread(\'tire.tif\');
I2 = uint8(colfilt(I,[5 5],\'sliding\',@mean));
figure
subplot(1,2,1), imshow(I), title(\'Original Image\')
subplot(1,2,2), imshow(I2), title(\'Filtered Image\')
对输入的5*5邻域块球平均值输出对应像素值。
以上是关于matlab的一些关于块分类的函数~~~的主要内容,如果未能解决你的问题,请参考以下文章