2012-04-07 32 views
1

像素我有這樣的圖像: enter image description here獲取屬於形狀

在該圖像I具有11個的形狀(像橢圓)。我想要找到每個形狀中每個像素的RGB(包括白色邊緣/邊界,因爲它是形狀的一部分)。

如果有幫助,我有每個形狀的中心座標。

非常感謝!

回答

2

這裏是讓你的工作更輕鬆的命令......

  1. 爲 「Superbest說:」 帶命令

    %% Example%% 
    img = imread('coins.png'); 
    BW4 = im2bw(img); 
    BW5 = imfill(BW4,'holes'); 
    imshow(BW4), figure, imshow(BW5); 
    
  2. 現在用命令bwlabeln填充圖像() ,找出聚類或形狀的數量。

    %% Example%% 
    L = bwlabel(BW5); 
    figure,imshow(L,[]); 
    

我會給你相同數量的形狀的數量給所有的像素屬於相同的形狀。 L包含BW中已連接組件的標籤。體重可以有任何維度; L與BW的大小相同。 L的元素是大於或等於0的整數值。標記爲0的像素是背景。標記爲1的像素構成一個對象,標記爲2的像素構成第二個對象,依此類推。

  1. 假設您有兩個形狀或區域,然後找到原始顏色或灰度值od,如下所示。

    %% Example%% 
    cods = find(L==1); 
    Shape1(1:size(img,1),1:size(img,2))=0; 
    Shape1(cods) = img(cods); 
    %% Now shape1 is same size as img, but will have gray scale values at region1 locations only,you will get RGB valuse in shape1 image.. repeate it for as many shapes as you have in your image. 
    

擁有一個美滿的編碼...

+0

+1使用bwlabel的'()'。 – 2012-04-09 12:17:51

2

這是發生在我身上,因爲我正在審查問題的解決哈克:

  1. 用白色填充每個形狀爲您的其他問題,Matlab fill shapes by white被描述。
  2. 由於您仍然有形狀的中心,現在再次使用圖像中不存在的顏色(如粉色)填充每個形狀。
  3. 現在,每個感興趣的像素(屬於形狀:邊緣和內部的像素)都被着色爲粉紅色,並且沒有其他像素具有此顏色。
  4. 現在,你可以簡單地得到粉色像素的列表:

    foundPixels = find(img == pink); % pink holds the value for the pink color I used.

  5. 現在你可以使用原始圖像(pixels = original(foundPixels);)對這些指數來獲得你想要的像素。