谈RGB色彩图片相似度用到的最强六色归一方法
圖像處理很多人喜歡轉(zhuǎn)換成灰度,因?yàn)椴噬秶鷮?shí)在太廣,處理耗時間。
其實(shí)有時候我們需要把一副圖快速的轉(zhuǎn)化為固定色相的六種純色,但又不想改變原圖的色彩濃度,既把所有顏色歸類為紅綠藍(lán)青黃紫;算是折中的方式了。
? ? ? 想超越鄭斯彬的速度一定很難,畢竟for循環(huán)內(nèi)全程僅加法和減法的比較來實(shí)現(xiàn),而方法本身夠精簡的了?
相比轉(zhuǎn)成灰度圖(通常用了乘法和除算法那種),此法只會更快!
?
?for (int y = 0; y < Height; y++)?
? ? ?{
? ? ? ? ? ? ?for (int x = 0; x < Width; x++)?
? ? ? ? ? ? ? ? ? ?{?
? ? ? ? ? ? ? ? ? ???? ?rgb.SetRGB(ref ptr[2], ref ?ptr[1], ref ptr[0]); ?//用加減法計算RGB色彩的PH、ZH 、SP屬性,函數(shù)默認(rèn)多計算了些其他屬性?
? ? ? ? ? ? ? ? ? ? ? ? ? ? if (rgb.PH > 0) ? ? ? ? ? ? ? ? //平衡?> 0表示該色是紅綠藍(lán)色
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?rgb.Z -= rgb.ZH ;? ? ? ?//消除青黃紫的綜合色屬性
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? else? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //反之是青黃紫色
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? rgb.Z += rgb.SP;? ? ? ?//消除相關(guān)的紅綠藍(lán)色偏
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ? ? ? ? ? ? }//for1?
? ? ? ? ? ? ? ? ? ? ? ? ptr += 3;??
? ? ? ? ? ? ? ? ? ? }//for2
? ? ? ? ? ? ? ? ? ? ptr += iOffset;? ? ? ??
? ? ? ? ?}??
690*600=414000像素點(diǎn)計算耗時0.031秒
總結(jié)
以上是生活随笔為你收集整理的谈RGB色彩图片相似度用到的最强六色归一方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关系型数据库与非关系型数据库优缺点
- 下一篇: IOS- 时间格式转换问题(12小时和2