全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1145
推到 Plurk!
推到 Facebook!

統計圖案上的顏色

尚未結案
ezkuro
一般會員


發表:2
回覆:3
積分:1
註冊:2005-09-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-18 23:20:33 IP:61.231.xxx.xxx 未訂閱
要作一個程式,可以把圖片上所有的顏色有多少個統計出來 目前想到的方法有 1. 用StringGrid來存 用回圈來一個一個比對 當這個顏色不存在時,就新增一行 存在時就把後面的欄位值 1 但是顯然效率很差 2. Valuelist 但是不知道應該要怎麼判斷這一個顏色,之前有沒有出現過 3. Linklist 但是如果當圖片越來越大,顏色越來越多時,速度會不會拖慢 eg:3000*2000 最後顯示的結果,要再道ACCESS把顏色對映出型號來,存進txt檔裡面 請長輩建議一下,哪一個方法比較好,或是有效率更好的辦法<(_ _)> 目前程式僅作到可以把所以的點RGB抓出來存近txt檔 但是對於要統計非常苦手啊
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-20 08:00:23 IP:221.169.xxx.xxx 未訂閱
不太瞭解你的敘述,我直接用我的觀點來說作法好了 最簡單的方法就是建一個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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-05 23:45:19 IP:220.135.xxx.xxx 未訂閱
感謝justdo大大的回覆 後來我是把把rgb值拿來建一棵binary search tree 然後一個一個比對 但是沒有沒弄成平衡樹,如果長短腳的話對速度應該影響很大吧
系統時間:2024-05-12 3:12:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!