我正在實現一個圖像處理任務,在該任務中,我比較了像素的顏色a 巨大的次數,並且我需要比較代碼儘可能快地執行。目前該圖像採用ARGB_8888格式:我忽略了透明度。所以我使用紅色,綠色和藍色的絕對差異總和作爲我對顏色差異的度量,儘管這種差異度量的選擇並不是石頭設定的(例如,也許差異的平方和可能更好有些意義)。估計顏色差異的快速方法
int coldif(int c1,int c2)
{
return (Math.abs((c1&0xff) -(c2&0xff))) +
(Math.abs(((c1&0xff00)>> 8) -((c2&0xff00)>> 8))) +
(Math.abs(((c1&0xff0000)>> 16)-((c2&0xff0000)>> 16)));
}
所以我很感興趣的是我現有的算法快,或者使用色差的不同措施,甚至整個圖像轉換成不同的顏色表示作爲前處理,然後將允許的方式將使用不同的色差算法。
什麼樣的你需要「差異」嗎?例如,「return c1 == c2」的明顯解決方案僅提供相同/不相同的差異。你需要知道「多少不同」的顏色,或者比較(c1,c2)和(c1,c3)之間的差異嗎? –
@ Oleg Estekhin:我需要某種程度的差異度量。所以只使用==或!=不夠好。 – Mick