我实施了一些适应性化的方法,他们使用一个小小的窗口,并在每一像素的阈值计算的。有问题与这些方法:如果我们选择的窗口太小,我们将获得这种效果(我认为原因是因为车窗的大小小的) alt text
(资料来源: piccy.info)

在左上角有一个原始图像,右上角的全球阈值的结果。底左例的划分图像的某些部分(但我说的是分析图像的像素小的周围,例如窗口的尺寸10×10).所以你可以看到的结果,这样的算法在右图像,我们得到了一个黑色的地区,但它必须是白色的。没有任何人知道如何改进的一个算法来解决这个问题?

有帮助吗?

解决方案

有shpuld是一个相当大量的研究在这一领域,但不幸的是我没有良好的联系。

一个想法,这可能会工作,但我没有测试,尝试来估计的灯光变化,然后删除以前的阈值的(这是一个更好的词比"化").问题是然后从适应性阈值,以找到一个良好的照明的模式。

如果你知道任何关于光的来源,那么你当然可以建立一个模型。

否则一个快速的黑客可能的工作是适用一个非常沉重的低通滤波器,以你的图像(模糊的话),然后使用那作为你的灯光模型。然后创建一个像之间的差别原始的和模糊的版本,并阈值。

编辑:后快速测试,看来我的"快速破解"是不是真的要在所有的工作。经思考我是不是很惊讶:)

I = someImage
Ib = blur(I, 'a lot!')
Idiff = I - Idiff
It = threshold(Idiff, 'some global threshold')

编辑2 有一个其它的想法,可能取决于如何你的图像产生的。尝试估计的灯光模型从第一行中的形象:

  1. 采取的第一个N的行中的图像
  2. 创建意味着排N收集行。你知道有一行为背景的模式。
  3. 为每个行图像减的背景模型的行(平均排)。
  4. 阈值所产生的图像。

不幸的是,我在家里没有任何好的工具来测试这个。

其他提示

它看起来像你这样做自适应阈值是错误的。你的图像看起来就好像你划分你的图像分成小块,计算的阈每个块并应用该阈值到整个街区。这就解释了“盒子”的文物。通常情况下,自适应阈值化装置,分别找到每个像素的阈值,与所述像素为中心的单独的窗口。

另一个建议是建立您的照明全球模式:在你的样品图片,我敢肯定,你可以使用最小二乘(/ Y /亮度空间X),以符合平面的图像,然后分开的像素为像素比平面(背景)更亮(前景)和更暗。然后,您可以再次使用这些平面之间的平均适应不同的平面背景和前景像素,阈值和迭代提高分割。如何好,将在实际工作取决于如何以及你的闪电可以用线性模型来模拟。

如果你试图段的实际对象是“薄”(你说了一些关于在评论条形码),你可以尝试使用简单的打开/关闭操作获得的照明模式。 (即关闭图像以去除前景像素,然后用[闭合图像+ X]为阈值)。

或者,你可以尝试平均移动滤波得到前景和背景像素相同的亮度。 (就个人而言,我想尝试的一个第一)

您具有非常不均匀的照明和相当大的对象(因此,没有通用的简单的方法来提取的背景和纠正的非均匀性)。这基本上意味着你不能在所有使用全局阈值,则需要自适应阈值。

您想尝试Niblack二值化。 Matlab代码,请点击这里 的http:// www.uio.no/studier/emner/matnat/ifi/INF3300/h06/undervisningsmateriale/week-36-2006-solution.pdf (第4页)。 有两个参数,你会用手必须调整:窗口大小(N在上面的代码)和重

尝试应用的一个地方适应性阈值使用这一程序:

  1. 卷积图像的平均或中位数的过滤器
  2. 减去的原始图像从一卷积
  3. 阈值的差异的图像

地方适应性阈值方法的选择一个单独的阈值对每一像素。

我使用这种方法广泛和它的工作的现有图像具有不均匀的背景。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top