matlab对像素邻域操作,matlab图像的邻域操作与块操作
1.圖像的滑動(dòng)鄰域操作。
鄰域操作是指將每個(gè)輸入的像素值以及其某個(gè)鄰域的像素值結(jié)合處理而得到對(duì)應(yīng)的輸出像素值的過程。鄰域通常形狀規(guī)則。如2*2,2*3之類。
滑動(dòng)鄰域操作一次處理一個(gè)像素。
對(duì)于m*n的鄰域,中心像素坐標(biāo)為:floor(([m,n]+1)/2);
例如:鄰域2*2——>[1 1]
鄰域2*3——>[1 2]
實(shí)現(xiàn)滑動(dòng)鄰域操作的步驟:
(1) 選擇一個(gè)單獨(dú)的像素。
(2) 確定該像素的滑動(dòng)鄰域。
(3) 對(duì)鄰域中的像素值應(yīng)用一個(gè)函數(shù)求值,該函數(shù)將返回標(biāo)量計(jì)算結(jié)果。
(4) 將計(jì)算結(jié)果作為輸出圖像中對(duì)應(yīng)的像素的值。
(5) 對(duì)輸入圖像的每個(gè)像素都重復(fù)以上步驟。
滑動(dòng)鄰域操作函數(shù):
①
Y=nfilter(X,’index’,[m,n],fun,P1,P2....);?? %對(duì)圖像X以鄰域[m,n]進(jìn)行fun函數(shù)操作。
其中,index為可選參數(shù)。若指定,則意為將圖像作為索引圖像處理。
例如:
對(duì)圖像I的每個(gè)3*3鄰域進(jìn)行標(biāo)準(zhǔn)方差的運(yùn)算 :I2= nfilter(I,[3,3],’std2’);
或者:
B=nfilter(A,[3,3],@myfun);? %計(jì)算函數(shù)是自定義的,在myfun.m文件中。
②
Y=colfilt(X,[m,n],blocktype,fun);
其中,blocktype表示塊的移動(dòng)方式,有兩個(gè)取值:distinct(分離塊)、sliding(滑動(dòng)塊)。
與nfilter相同,fun函數(shù)也可以是自定義的,
例如:
func=inline(‘min(x)’);
J=colfilt(I,[6,6],’sliding’,func);
2.圖像的塊操作。
對(duì)應(yīng)分離塊進(jìn)行操作的函數(shù):
Y=blkproc(X,[m,n],[mborder,nborder],fun,P1,P2...);
其中,[mborder,nborder]指定了圖像的擴(kuò)展邊界,即擴(kuò)展后圖像大小為[m+2mborder,n+2nborder]。
例如:
B=blkproc(A,[4,6],[2,3],fun,...);? %分離塊大小為4*6,行邊界為2,列邊界為4,因此fun函數(shù)操作的圖像大小實(shí)際為8*12。
同樣的,fun也可以使用一個(gè)內(nèi)聯(lián)對(duì)象,例:
I=imread(‘a(chǎn)lumgrns.tif’);
fun=inline(‘std2(s)*ones(size(x))’);
I2=blkproc(I,[8,8],'std2(x)*ones(size(x))');? 注:此處,不再是fun。
Imshow(I);
Figure,imshow(I2,[]);
總結(jié)
以上是生活随笔為你收集整理的matlab对像素邻域操作,matlab图像的邻域操作与块操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql pgsql 2017,DB-
- 下一篇: php数据库缓存服务器配置,php缓存技