1

嗨 我有一堆圖像。我們假設它們都是相同的大小。 圖像有黑色背景和一些準圓形綠色斑點 代表熒光。我必須計算每張圖像的熒光量(百分比) 。即綠地的面積。如何計算圖像中「綠點」的數量?

任何想法如何做到這一點,例如在Java中?

+0

您是否有權訪問計算機視覺機制? – Proclyon 2010-11-17 12:25:05

+0

類似的東西:計算綠色像素的數量併除以像素總數?我想我沒有得到這個問題... – 2010-11-17 12:26:01

+0

像素不是全部是相同的顏色。有一些「模糊」的綠色。問題是如何識別該區域 - 我的意思是邊界 - – Luixv 2010-11-17 12:30:50

回答

0

的一點想法:

  • 你可以做邊緣檢測,然後執行hough circle transform。如果你已經知道圓的半徑,這應該很好。
  • 比較顏色時,可以使用更適合模糊比較的顏色空間。例如,HSV color space
  • 由於你的背景是黑色的,它可能比較容易計算亮度和應用閾值。然後對閾值以上的像素進行計數。
  • 發佈計算機視覺問題時,查看輸入材料總是有幫助的。
0

我沒有時間細說了,但我可以勾勒出你的過程:通過圖像

  1. 加載每個圖像

    環成一個BufferedImage(HTTP:/ /download.oracle.com/javase/6/docs/api/java/awt/image/BufferedImage.html)

  2. 循環每一個像素(x,y)和得到的顏色爲像素(INT的getRGB(中間體X ,int y)對)
  3. 這種顏色與您的參考顏色(例如0x7FFF00綠色)或定義範圍接受的顏色。
  4. 如果匹配,增加一個計數器
  5. 循環跑後,瞧比較計數器像素和等人的總數,你有你的百分比

(注:這可能是一個很天真辦法做到這一點,並有優化的負載可能的,但它應該是一個開始)

5

這是圖像處理中的一個標準問題,叫做圖像分割。您將能夠找到有關它的大量信息。

特別是,這是在顯微圖像處理,一個共同的問題,就是你在做什麼。我認爲可能有罐裝操作在ImageJ;如果不是,它將是ImageJ中一個相當簡單的宏,並且由於ImageJ是用java編寫的,所以如果你喜歡,你可以使用ImageJ的庫編寫Java代碼。

我建議的方法在其中:

  1. 預處理圖像把它清理乾淨 - 背景減法減去中值濾波器或高斯卷積附近比你的細胞大,或滾球算法(查看ImageJ源代碼)或類似的東西,也許接着出現少量模糊(例如,具有3x3鄰域的中值濾波器)以去除斑點。
  2. 計算圖像
  3. 搜索直方圖中的兩個峯,一個對應於黑色的像素,一個綠色
  4. 使用兩個峯的值的種子的兩簇K均值的直方圖(2 - 我的假設!)分割

而不是做K-means的步驟,你可以從直方圖中選擇一個閾值(查找兩個峯之間的谷,比如說),然後細分。或者使用某種自適應分割(比較像素與鄰近區域的中值),但這需要進行一些調整。