gpt4 book ai didi

image-processing - 如何实现带颜色的自适应阈值滤波器

转载 作者:行者123 更新时间:2023-12-04 07:23:21 27 4
gpt4 key购买 nike

我正在寻找一种类似于自适应阈值的算法,但可以保持颜色。我正在尝试拍摄这样的图像:

original image

并使它看起来像这样:

processed image

如果重要的话,我正在 ios 中工作。

最佳答案

这是一个适用于您的示例图像的 CIKernel

kernel vec4 coreImageKernel (sampler i)
{
vec2 dc = destCoord();

// center pixel color
vec4 c = unpremultiply(sample(i, samplerTransform(i,dc+vec2(0.0,0.0))));

// for a whiteboard, the max of a neighborhood is likely to be the color
// of the whiteboard
vec4 cmax = c;
cmax = max(unpremultiply(sample(i, samplerTransform(i,dc+vec2(10.0,0.0)))), cmax);
cmax = max(unpremultiply(sample(i, samplerTransform(i,dc+vec2(-10.0,0.0)))), cmax);
cmax = max(unpremultiply(sample(i, samplerTransform(i,dc+vec2(0.0,10.0)))), cmax);
cmax = max(unpremultiply(sample(i, samplerTransform(i,dc+vec2(0.0,-10.0)))), cmax);

// normalize the center color according to the whiteboard color
vec4 r = c / cmax;
return premultiply(r);
}

那么这是如何工作的呢?那么内核的第一部分,即计算 cmax 的部分,就是计算白板的局部颜色。这是棘手的部分。基本上它确定(大约)白板在没有标记的情况下的颜色。为此,内核做出三个关键假设:
  • 白板颜色局部变化不大
  • 标记从白板颜色和
  • 中减去
  • 对于每个像素,它或附近的像素(10 个像素 N、S、E 或 W)没有任何标记。实际上,内核假定标记线比 10 个像素细,但可以调整该常量)

  • cmax 的输出如下所示:

    enter image description here

    一旦接近本地白板颜色,只需将当前像素除以本地背景即可。这类似于从图像中去除色偏的方式。

    该算法类似于 WWDC13 Core Image 演示中的 Haze Removal 示例。在该示例中,减去局部最小值以制作更黑的黑色。在这种情况下,局部最大值被划分以制作更白的白色。

    Result :

    关于image-processing - 如何实现带颜色的自适应阈值滤波器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28223727/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com