Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 图像中颜色的二值化_Image Processing_Graphics_Colors - Fatal编程技术网

Image processing 图像中颜色的二值化

Image processing 图像中颜色的二值化,image-processing,graphics,colors,Image Processing,Graphics,Colors,我从基于像素的线条图中提取原语,并希望按颜色选择。因此在下面 我希望提取“蓝色”、“绿色”和“黑色”原语。(我准备尝试重建被另一种颜色的原语分割的原语) 然而,“蓝色”添加了不同数量的白色(类似于黑色的灰度)。因此,最常见的颜色(为了简单起见,四舍五入为12位)及其计数可能是 000 881 // black 88f 1089 // white-blue fff 70475 // white 但在较低的频率下还有其他程度的白度 // other white-blue 99f

我从基于像素的线条图中提取原语,并希望按颜色选择。因此在下面

我希望提取“蓝色”、“绿色”和“黑色”原语。(我准备尝试重建被另一种颜色的原语分割的原语)

然而,“蓝色”添加了不同数量的白色(类似于黑色的灰度)。因此,最常见的颜色(为了简单起见,四舍五入为12位)及其计数可能是

000   881 // black
88f   1089 // white-blue
fff   70475 // white
但在较低的频率下还有其他程度的白度

// other white-blue 
99f   207

// other grey
ddd   196
我相信作者在许多图表中只使用了非常有限数量的纯色(例如3-6),并且各种渲染工具将添加白色。low颜色可以用
(0=

但是,不要求使用原色,该套装可以是任意数量的白色的任何颜色

如何重建(小)组不同的颜色?如果可能的话,我可以选择这些区域,转换成灰色,然后以正常的方式进行二值化

我更喜欢Java源代码,但我怀疑任何代码都是足够的

我读了两个有用的问题


它们使用H-C-L,这可能是一个前进的方向,尽管它们不能直接满足我的要求。

您可以尝试使用。我认为它应该很适合你的需要。只要更改相同颜色的阈值即可。我认为它应该在这里工作得很好,因为作为对象连接的任何两种颜色之间似乎都有很大的差异。

如果你的直觉是正确的(所有像素都是某种颜色和纯白色的线性混合),在RGB立方体中,所有颜色都将在源自白色角的线段上对齐

如果您为每种不同的颜色选择一个代表性像素(尽可能远离白色,以获得更好的精度),则可以通过查找由该像素、白色和代表性像素形成的最佳对齐来识别任何其他像素的颜色

通过计算所形成角度的余弦来测试对齐(使用3D向量,余弦是标准乘积的点积;删除符号)。理论上,余弦应该正好是1,但是由于数值误差,它可以更小,所以只考虑最大化余弦的代表色。
特别注意白色像素(与白色角的距离较短),否则它们将被随机分配到某些代表性颜色。

根据涉及的颜色数量及其相似性,简单的R、G和B值阈值将迅速将所有颜色减少到8种颜色中的一种(黑色、红色、绿色、蓝色、青色、洋红、黄色或白色)。

它可能有用(而且我已经生长了区域),但是蓝色中白色的数量有很多变化-我真的很想将蓝色二值化为一种独特的操作,这样你就可以将所有你绝对不想要的像素阈值化(例如,所有全白色像素)?您可以尝试对整个图像上的所有非白色像素进行动态聚类。这会将所有相似的颜色组合在一起,并且应该自动工作,而无需确定阈值。我们不能依赖块中的颜色。它可以是更细粒度的-例如抗锯齿字符kmeans或群集即使像素是随机分布的,这种方法也能起作用。你可能甚至不需要对黑白数据设置阈值。你知道有多少种颜色或者你想分割出哪些颜色吗?不。我知道可能没有很多,但我不知道它们是什么。如果没有增白,很容易-只需编译一组。但是因为它们可以变化,我需要知道howThx。我已经意识到,如果不了解抗锯齿算法,可能就没有确切的答案。我认为白色被添加到基色中,但H和S都可以变化
000 + x(FFF)
00F + x(FF0) // blue
0F0 + x(F0F) // green