2013-02-12 66 views
2

我想找到一個圖像中的對象的總像素數。在matlab中找到感興趣對象中的總像素?

以下圖爲例。我想找出三角形中的像素總數。

enter image description here

我使用

imtool('test.jpg'); 

並使用measure distance工具和手動發現的距離,從而求出三角形來計算該對象的總像素的區域中,在這種情況下三角形。

有沒有一種有效的方法呢?

+0

imgur被阻止在工作,所以我不能清楚地看到發生了什麼事情,但你可以找到邊緣和內計算面積有問題的我認爲 – 2013-02-12 19:35:30

回答

5

這裏的一個方法:

img = imread('test.jpg'); 
thr = graythresh(img); 
thr_img = im2bw(img,thr); 
triangle_count = sum(sum(thr_img < thr)) 
  1. 選擇一個閾值用於圖像
  2. 二值化基於該閾
  3. 圖像數的二值化圖像中的低於該閾值的像素數

就你而言,三角形中的像素數量似乎在1605037左右。

這裏是thr_img可視化 - 二值圖像:

Binarized Image

+0

我預計這會更「可靠」一點。在Mathematica中,我用'ComponentMeasurements [ColorNegate [Binarize [f]],「Count」]得到1601845。沒有參數的'Binarize'使用Otsu,所使用的閾值可以通過'FindThreshold [f]'找到,它返回〜0.384314。另一方面,Matlab給出了閾值〜0.4039。爲了得到更接近的結果,首先需要將圖像轉換爲灰度('rgb2gray'),然後區別僅在於Matlab中使用的精度。 – mmgp 2013-02-12 20:22:32

0

對圖像進行二值化處理,然後使用bwconvhullThe bwconvhull docs有一個很好的例子來說明如何做到這一點。