matlab中nlfilter函数,matlab的一些关于块分类的函数~~~
1. nlfilter(General sliding-neighborhood operations)
B = nlfilter(A, [m n], fun),這是一個(gè)其中A是圖像[m ?n]是圖像處理區(qū)域的矩陣大小,fun是函數(shù)句柄,B是函數(shù)返回的一個(gè)標(biāo)量。
意為對(duì)圖像A的每個(gè)大小為m*n的patch進(jìn)行fun函數(shù)的操作,patch的取法為滑動(dòng)(sliding),即patch的中心像素遍歷圖像的每個(gè)點(diǎn),當(dāng)取到邊界時(shí)需要進(jìn)行邊界延拓。fun必須是函數(shù)的句柄,可自由定義也可取matlab內(nèi)置的函數(shù)。
例:這個(gè)例子是應(yīng)用中值濾波對(duì)圖像進(jìn)行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
不重疊的塊運(yùn)算命令(distinct block processing),調(diào)用格式:B = blockproc(A,[M N],fun);
意為對(duì)圖像A的每個(gè)不重疊的大小為m*n的塊進(jìn)行fun函數(shù)的操作,級(jí)聯(lián)的結(jié)果為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
調(diào)用格式:B = colfilt(A,[m n],block_type,fun)
意為將圖像A重排成每列為m*n塊拉成一列組成的臨時(shí)矩陣,對(duì)該臨時(shí)矩陣進(jìn)行fun函數(shù)的操作
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‘)
對(duì)輸入的5*5鄰域塊球平均值輸出對(duì)應(yīng)像素值。
原文:http://www.cnblogs.com/byteHuang/p/6783496.html
總結(jié)
以上是生活随笔為你收集整理的matlab中nlfilter函数,matlab的一些关于块分类的函数~~~的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vijos 1385盗窃-月之眼
- 下一篇: 东南大学4系短学期matlab,东南大学