6. 特定地區處理__MATLAB影像處理

來源:互聯網
上載者:User

        在進行影像處理時,有時只需要對映像中的某個特定地區進行處理,而並不需要對整個映像進行處理。比如要對使用者選定的一個特定的一個地區作均值濾波或對比增強,MATLAB就可以只對特定的地區進行處理。

更多MATLAB影像處理視頻請點擊  http://study.163.com/course/courseMain.htm?courseId=1003594013

1.指定感興趣地區

       MATLAB中對特定地區的處理是通過二值掩模來實現的。使用者選定一個地區後會產生一個與原圖大小相同的二值映像,選定的地區為白色,其餘部分為黑色。通過掩模映像就可實現對特定地區的選擇性處理。

      MATLAB影像處理工具箱提供了3個函數用於產生二值掩模,從而選擇特定地區,下面分別介紹。

      (1)roipoly:

              roipoly函數用於選擇映像中的多邊形地區。roipoly函數返回二值映像BW,選中地區的像素值為1(白色),其餘部分值為0(黑色)。這個二值映像可以作為掩模,通過與原圖的運算選擇目標或背景。其文法格式如下:

             BW=roipoly(I,c,r)

            BW = roipoly(I)
            BW = roipoly(x,y,I,xi,yi)
            [BW,xi,yi] = roipoly(⋯)
            [x,y,BW,xi,yi] = roipoly(⋯)

 

             BW=roipoly(I,c,r)是用向量 c、r 指定多邊形各角點的 x、y 軸的座標。

             BW=roipoly(I)是允許使用者互動選擇多邊形地區,選擇角點,用空格鍵和 Del 鍵撤銷選擇,按 Enter 鍵確認選擇。

             BW=roipoly(x,y,I,xi,yi)用向量 x 和 y 建立非預設的座標系,然後在指定的座標系下選擇由向量 xi、yi 指定的多邊形地區。
             [BW,xi,yi]=roipoly(⋯)互動選擇多邊形地區,並返回多邊形角點的座標。
             [x,y,BW,xi,yi]=roipoly(⋯)互動選擇多邊形地區後,還返回多邊形頂點在指定為座標系 x,y下的座標。

例:

I=imread('eight.tif');
 %matlab內建的素材圖,不需要指定路徑,在MATLAB的工作路徑下,C:\Program Files\MATLAB\R2014a\toolbox\images\imdata
 c=[222 272 300 270 221 194];
 r=[21 21 75 121 121 75];
 BW=roipoly(I,c,r);
 imshow(I),title('原圖');
 figure,imshow(BW),title('選中的地區');

(2)roicolor

  MATLAB 影像處理工具箱提供的 roicolor 函數可以對 RGB 映像和灰階映像實現按灰階或亮度值選擇地區,其文法格式為:
    BW = roicolor(A,low,high)
    BW = roicolor(A,v)

    BW = roicolor(A,low,high)表示按指定的灰階範圍分割映像,返回二值掩模 BW,[low high]為所要選擇地區的灰階範圍,若灰階值在這個範圍,則返回1(白色),否則返回0(黑色)。如果 low 大於 high,則返回為空白矩陣。

  BW=roicolor(A,v)是按向量 v 中指定的灰階值來選擇地區。

例:

 I=imread('rice.png');
>>  %matlab內建的素材圖,不需要指定路徑,在MATLAB的工作路徑下,C:\Program Files\MATLAB\R2014a\toolbox\images\imdata

>> BW=roicolor(I,128,255);
>> %映像I的灰階值在[128 255]的範圍內返回1(即白色),不在[128 255]範圍內,返回0(即黑色);
>> figure,imshow(I),title('原圖');
>> figure,imshow(BW),title('選擇的地區');


(3)poly2mask

      該函數可以轉化指定的多邊形地區為二值掩模。語句格式為
     BW = poly2mask(x,y,m,n)
    x 和 y 表示兩個向量,指定一個多邊形地區,BW 的大小為 m×n,在 BW 中指定地區內的像素為 1(白色),指定地區外的像素為 0(黑色)。如果 x 和 y 指定的地區不封閉,則 poly2mask 自動封閉這個多邊形。

例:

x = [63 186 54 190 63];
y = [60 60 209 204 60];
bw = poly2mask(x,y,256,256);
imshow(bw)
hold on
plot(x,y,'b','LineWidth',2)


2. 特定地區濾波

MATLAB 影像處理工具箱中提供了一個地區濾波函數 roifilt2,其文法格式為:
J = roifilt2(h,I,BW)
J = roifilt2(I,BW,fun)
J = roifilt2(I,BW,fun,P1,P2,⋯)

J = roifilt2(h,I,BW)使用濾波器 h 對映像 I 中用二值掩模 BW 選中的地區進行濾波。
J=roifilt2(I,BW,fun)和 J=roifilt2(I,BW,fun,P1,P2,⋯)對映像 I 中用二值掩模 BW 選中的地區作函數運算 fun,其中 fun 是描述函數運算的字串,參數為 p1、P2、⋯⋯返回映像 J 在選中地區的像素為映像 I 經 fun 運算的結果,其餘部分的像素值為 I 的原始值。

例:

I = imread('eight.tif');
c = [222 272 300 270 221 194];
r = [21 21 75 121 121 75];
BW = roipoly(I,c,r);%指定濾波地區為 c 和 r 確定的多邊形
h = fspecial('unsharp');%指定濾波運算元為 unsharp
J = roifilt2(h,I,BW);
figure,imshow(I),title('原圖');
>> figure,imshow(BW),title('濾波的地區');
>> figure,imshow(J),title('對選定地區濾波後的輸出');




3.特定地區填充

   MATLAB 影像處理工具箱中提供了函數 roifill 用於對特定地區的填充,其文法格式為:

   J = roifill(I,c,r)
   J = roifill(I)
   J = roifill(I,BW)
   [J,BW] = roifill(⋯)
   J = roifill(x,y,I,xi,yi)
    [x,y,J,BW,xi,yi] = roifill(⋯)

   其中 J=roifill(I,c,r)填充由向量 c、r 指定的多邊形,c 和 r 分別為多邊形各頂點的 x、y 座標。它是通過求解邊界的拉普拉斯方程,利用多邊形邊界點的灰階平滑的插值得到多邊形內部的點。通常可以利用對指定地區的填充來“擦”掉映像中的小塊地區。

 J=roifill(I)表示由使用者互動選取填充的地區。選擇多邊形的角點後,按 Enter 鍵表示結束,空格鍵或 Del 鍵表示取消一個選擇。
 J=roifill(I,BW)用掩模映像 BW 選擇地區。
 [J,BW]=roifill(⋯)在填充地區的同時還返回掩模映像 BW。
 J=roifill(x,y,I,xi,yi)和[x,y,J,BW,xi,yi]=roifill(⋯)表示在指定的座標系 x?y 下填充由向量 xi和 yi 指定的多邊形地區。

例:

I=imread('eight.tif');
  %matlab內建的素材圖,不需要指定路徑,在MATLAB的工作路徑下,C:\Program Files\MATLAB\R2014a\toolbox\images\imdata
c=[222 272 300 270 221 194];
r=[21 21 75 121 121 75];
J=roifill(I,c,r);
figure,imshow(I),title('原圖');
>> figure,imshow(J),title('填充後的圖');


更多MATLAB影像處理視頻請點擊  http://study.163.com/course/courseMain.htm?courseId=1003594013

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.