簡體   English   中英

如何比較顏色和已知的顏色?

[英]How can I compare colors to a known set?

給定一張台球的圖像,我希望能夠分辨出它是什么球。 球的顏色是已知的,並且通常不會偏離一些已知的例外。 但是,識別特定球的最佳方法是什么?

我的方法是,假設我們知道一張圖片中除了一個台球(除了背景等)之外什么都沒有,那就是將每個像素映射到一個我們期望用於台球的已知顏色。 理想情況下,此映射將永遠只有白色(所有球都有一些白色),黑色(除了8球以外,用於書寫的黑色甚至更少)以及確定其編號的球的顏色。 因此,對於2號球,我願意接受或接受90%紅色,7%白色和3%黑色。 該方法取得了一定程度的成功。

問題是如何正確地將像素的顏色映射到已知顏色之一。 單獨的色相對大多數而言效果很好,但對於某些色(粉紅色4 +紅色3),色相可以相同,但飽和度不同。

我覺得我可以為此制定自己的規則,並對其進行一些調整,但是我想看看是否有更好的選擇。 我嘗試了CIE76的實現,但結果令人失望。 我不想扮演我自己的已知算法實現角色,但是如果有一個很好的說明,它對程序員友好,則可以。

意見,想法或資源?

每條評論:DeltaE(CIE76和變體)在更大的樣本量下效果更好。 我最初的想法是,我將找到球的“真實”顏色,並嘗試使用該顏色,而不是使用許多在光照下變化的樣本,但這被證明是無效的,盡管也許可以考慮光照本身,但是有可能。

最后,我確實找到了一個名為Colorful的 ac#庫,該庫可在nuget上使用,該庫非常易於使用,並且寫得很好。 RGB-> Lab轉換非常昂貴,因此請盡可能進行預處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM