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