gpt4 book ai didi

c# - 通过代码从图像中裁剪空边框的简单算法?

转载 作者:可可西里 更新时间:2023-11-01 08:26:33 27 4
gpt4 key购买 nike

目前我正在 C#/.NET 中寻找一种相当快速且相当准确的算法来在代码中执行这些步骤:

  1. 将图像加载到内存中。
  2. 从位置(0,0)的颜色开始,找到未被占用的空间。
  3. 剪掉这个不必要的空间。

我已经说明了我想要实现的目标:

Example illustration

我能想到的是获取 (0,0) 处像素的颜色,然后执行一些 unsafe 逐行/逐列遍历所有像素,直到我用另一种颜色遇到一个像素,然后切掉边框。

我只是担心这真的很慢。

所以我的问题是:

您是否知道任何快速算法(最好没有任何第 3 方库)从内存图像/位图中删除“空”边框?

旁注:算法应该“合理准确”,而不是 100% 准确。一些容差,例如裁剪过多或过少的一行都可以。

补充 1:

我刚刚以最简单的方式实现了我的蛮力算法。 See the code over at Pastebin.com .

最佳答案

如果您知道您的图像居中,您可以尝试沿对角线方向行走(即 (0,0), (1,1), ...(n,n) ),直到命中为止,然后在一次检查,直到找到“空”行(在每个维度中)。对于您发布的图像,它会减少很多比较。

您应该能够同时从 2 个相对的角执行此操作以获得一些多核 Action 。

当然,希望你不是图像中心 1 像素宽线的病态情况 :) 或者图像中断开连接的对象的双重病态情况,使得整个图像居中,但没有任何东西穿过对角线.

你可以做的一个改进是给你的“命中颜色”一些公差(也许可以调整?)

关于c# - 通过代码从图像中裁剪空边框的简单算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7083853/

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