本文主要是介绍OpenCV, color reduction method,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转载请注明出处!!!http://blog.csdn.net/zhonghuan1992
OpenCV, colorreduction method
目标:
这次学习的目标是回答下面的几个问题:
1 图片像素是如何被扫描的?
2OpenCV 矩阵值如何被存储?
3如何衡量算法的性能?
4什么是查找表和为什么要用他们?
看完这篇,希望能够解决上面的这些问题。
正文:
首先我们考虑一下简单的色彩降低方法(color reduction method,翻译的不好请指正),如果使用的是c或c++无符号的char(八字节大小的空间),一个信道(channel)有256个不同的值(2^8=256),但是如果使用的是GRB方案,三个channel的话,颜色的数量就会变为256*256*256,大概是16个million这么多,这么多的颜色数量,对于计算机来说仍然是一个负担,所以可以想一些方法来降低这些色彩数量。
可以使用简单的方法来降低图像色彩空间,比如,将0-9的数字都统一用0来代替,10-19的数字都统一用10代替。这种转换方案可以用下面的公式表示
通过上面的公式,把所有像素点的值更新一下。但是,上面的公式中有除法,这里要表达一个是,计算量比较多的情况下,不用乘除,就不要用,最好把他们转换为加减。我们知道,在转换前像素点的值只有256个,所以我们可以用查找表的方式,我们事先把所有的计算结果都保存在一个数组里,每次要执行上面的公式计算的时候,结果直接从数组里取出来就ok了。比如32对应30,表table[32]=30是早计算出来的,直接访问table[32]就OK了。
图片矩阵如何在内存中存储的:
灰度图片的矩阵存储方式:
灰度图片的每一个像素点,只由一个值来表示,所以,就是一个普通的二维矩阵。
这篇关于OpenCV, color reduction method的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!