2014-02-15 97 views
1

我讀regionprops文檔,結果發現,如果被標記的圖像灰度,regionprops會發現PixelValues以及其定義的「PixelValues」爲:爲了更好地理解regionprops

「PixelValues ' - p-by-1向量,其中p是 區域中的像素數。矢量中的每個元素都包含該區域中的一個像素的值。

像素值是像素的灰度值嗎?喜歡0到255之間?假設這裏提到的區域是使用bwlabel獲得的帶標籤的連接組件也是安全的。所以我想看看每個像素的像素值(我知道它將是一個網格和不清楚,但在縮放的幫助下,我將能夠讀取值)但我使用的代碼產生了一個奇怪的結果。因爲在結果中沒有顯示每個區域周圍顯示像素值的清晰框(就像stats.Area一樣)。這是我的了:

enter image description here

爲什麼文本框中這麼長時間?爲什麼它包含小數?當我輸入stats(1).PixelValues我得到像這樣

ans = 

    125 
    128 
    130 
    126 
    137 
    101 
    131 
    28 

一個[2159x1]矢量這裏是我的代碼

img = rgb2gray(imread('W1\Writer1_01_02.jpg')); 
bw_normal = im2bw(img, graythresh(img)); 
bw = imcomplement(bw_normal); 
[label,n] = bwlabel(bw); 
stats = regionprops(label, img, {'Area', 'Centroid', 'BoundingBox', 'PixelValues'}); 

imshow(img); 

%To display text box on CC 

for j = 1:numel(stats) 
     text(stats(j).Centroid(1),stats(j).Centroid(2), ... 
     sprintf('%2.1f', stats(j).PixelValues), ... 
     'EdgeColor','b','Color','r'); 
    end 

回答

1

您在這裏請教幾個問題。我會試着回答。

  1. 當要求'PixelValues'你得到與輸入img對應於標記的區域在label中的像素的灰度值的向量。即,stats(ii).PixelValues矢量,其元素數等於第ii號區域中的像素數。該向量的值是從img中的相應像素獲取的灰度值。

  2. 'PixelValues'中的值範圍取決於輸入img。如果img的值在0到255之間,那麼值將是。如果轉換img翻一番(例如,使用im2double)值將響起EIN 0..1

  3. 你的文本框很長,因爲他們告訴你每個區域(很多像素的值)的所有像素值。它們包含小數點,因爲這是您用'%2.1f'打印它們的方式。使用'%d'打印整數值。您可能還想在其中添加空間。

  4. 如果你只是想檢查像素值,你migt想嘗試像impixelinfo工具。