統計圖案上的顏色 |
尚未結案
|
ezkuro
一般會員 發表:2 回覆:3 積分:1 註冊:2005-09-24 發送簡訊給我 |
要作一個程式,可以把圖片上所有的顏色有多少個統計出來
目前想到的方法有
1. 用StringGrid來存
用回圈來一個一個比對
當這個顏色不存在時,就新增一行
存在時就把後面的欄位值 1
但是顯然效率很差 2. Valuelist
但是不知道應該要怎麼判斷這一個顏色,之前有沒有出現過
3. Linklist
但是如果當圖片越來越大,顏色越來越多時,速度會不會拖慢
eg:3000*2000 最後顯示的結果,要再道ACCESS把顏色對映出型號來,存進txt檔裡面
請長輩建議一下,哪一個方法比較好,或是有效率更好的辦法<(_ _)>
目前程式僅作到可以把所以的點RGB抓出來存近txt檔
但是對於要統計非常苦手啊
|
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
不太瞭解你的敘述,我直接用我的觀點來說作法好了 最簡單的方法就是建一個array,存放每種顏色存在的數量,而此array的大小就是所有的顏色的數量,這會有幾個問題,
第一個,索引值該用什麼?
可參考BCB的TColor型態,就是直接將RGB三元色組合起來
ex: 256*256*R 256*G B 之類的
第二個,array大小會相當龐大,24bits的色彩,array需高達256^3=16777216這麼大
第三個,有時影像可能才300x200=60000,實在不需要每個顏色都當成索引
第四個,希望array的大小能很接近影像顏色的數量,不用浪費多餘的空間(而且能自動化完成)
這三個問題可一併解決,解決方法就是hash
hash簡單的說,就是在一個龐大的array底下建立一個小array的對應關係,而這個小array的大小是由他自己來維護的,但是從user的觀點來看,看到的是那個龐大的array,很幸運的,STL提供了一個hast_map,可完成以上工作
第五個問題,若你讀取的是JPG等之類會壓縮的影像,則兩個相鄰的點的顏色,對人眼來說是一樣的,但是對電腦來說RGB只要任一個差1,就會被判斷是不同的顏色,因此,你應該考慮比對顏色的方法是否可以放鬆些,例如只取三元色的前7個或6個bits,這樣可有效的縮小索引範圍128^3或64^3
|
ezkuro
一般會員 發表:2 回覆:3 積分:1 註冊:2005-09-24 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |