给定下图:
A 和 B 的位置已知,图片的其余部分只是原始像素数据(只有红色和白色像素)。可以用什么算法删除AB右边的部分?
最佳答案
用两点定义一条线。直线方程将必须去除的像素分开。如果你想以新边界平滑地跟随形状曲线的方式删除点,你需要一些方法来插入形状边界(基于来自边界的其他点的信息)。该插值必须通过两个黑点。现在,如果你有插值,你可以计算两个黑点之间的插值曲线,并将曲线上的所有点设置为白色。我可以建议至少使用曲线中的一个点并使用一些 cubic spline interpolation .
编辑: 根据您的评论。
那么算法很简单:保留一个指针,从较低的点 (A) 开始,沿着边界 (A') 移动,直到到达另一点。这可以通过检查当前指针位置的邻居并比较颜色来完成。现在,当您移动指针时,将红色点线从指针 (A') 移至点 A-B(绿色)之间定义的线(蓝色)。当行与另一个黑点相同时(例如 A' 和 B 在同一行),有一个指针位置。然后从B点开始一个新的指针以同样的方式追踪边界,并去除两个指针A'和B'之间的红色像素。
关于algorithm - 如何删除由线段和颜色 block 分隔的区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5650684/