首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCV中的基本色彩还原算法

OpenCV中的基本色彩还原算法
EN

Stack Overflow用户
提问于 2013-11-13 19:24:45
回答 2查看 1.4K关注 0票数 0

这是我在一本书中读到的OpenCV中的基本颜色还原公式。

代码语言:javascript
复制
//p is the value of the channel of a pixel
//n is the reduction factor
p = (p/n)*n + n/2; //integer division

我知道第一个表达式(p/n)*n是小于或等于pn的第一个倍数。我认为这对于通过n因子减少颜色就足够了。但我不明白有什么必要将n/2添加到其中。

而且,如果p=255n=5,这个公式将尝试设置p = 257,它会不会溢出p的范围?

请解释一下。

EN

回答 2

Stack Overflow用户

发布于 2013-11-13 21:11:32

使用n=255时,如果p< 255,(((p)/n)*n)将返回0,如果p == 255,则返回255。

为了达到平衡,您可能希望p< 128时返回0,p >= 128时返回255。这可以通过以下方式实现:

代码语言:javascript
复制
((p + n/2) / n) * n

这有点像((p / n) + 0.5) * n,只是你显然不能这么做。其效果是对p/n的结果进行舍入,而不是截断。实际上,这只适用于n的某些值。

获得所需内容的一种简单方法是使用查找表。

我同意((p)/n)*n + n/2有问题,正如老飞碟指出的那样。

票数 1
EN

Stack Overflow用户

发布于 2013-11-13 20:18:36

他们说n/2需要有“中心”位置,而不是最小位置,但你是对的,它看起来不需要。假设我想要两种颜色--黑色和白色,所以n=255。如果没有n/2,我会得到0和255。n/2 - 127和382,这似乎不正确。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19952507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档