回答
有两点定义一条线。线的方程分隔必须移除的像素。如果想要以某种方式删除点,使新边界沿着形状的曲线平滑流动,则需要一些方法来插入形状边界(基于边界中其他点的信息)。这个插值必须通过两个黑点。现在,如果有插值,可以计算两个黑点之间的插值曲线,并将所有点设置为白色。我可以建议使用曲线中至少一个点,并使用一些cubic spline interpolation。编辑: 根据您的意见。
然后,该算法很简单:保留一个从较低点(A)开始沿着边界(A')移动直到到达另一点的指针。这可以通过检查当前指针位置的邻居并比较颜色来完成。现在,当您移动指针时,将指针(A')上的红色点线移至定义在点A-B(绿色)之间的线(蓝色)。当行与另一黑点相同时(例如A'和B在同一行上),有一个指针位置。然后以跟踪边界的相同方式从B点开始一个新指针,并移除两个指针A'和B'之间的红色像素。
其实上图是一个区域的缩放。整个画面更大,可能有更多的东西,除了结点之外,在线段的右侧。我正在寻找的算法需要检测线段右侧的红色像素,并在到达白色像素时停止擦除。另外,为了简单起见,我认为剪切是笔直的,它不需要很好地跟随曲线。 – 2011-04-13 16:47:11
感谢罗斯,我最终实现了解决方案和Mark的组合,现在它工作的很好。 – 2011-04-14 12:25:12
你需要从画线到B,然后在红色像素的行右侧的一个开始flood fill。
- 1. SimpleCV - 颜色分割和区域生长
- 2. PrimeFaces滑块 - 颜色选定的区域
- 3. 颜色以编程方式分隔的某些区域
- 4. 如何计算android中位图擦除区域的百分比?
- 5. 更改LinearLayout中分隔线的颜色
- 6. 颜色在曲线分布下的阴影区域绘制不同的颜色
- 7. 为图像的区域分配颜色
- 8. 如何清除区域和模块
- 9. jvectormap区域颜色
- 10. 如何擦除画布上的白色颜色路径
- 11. 垂直CSS分隔线颜色
- 12. Android对话框分隔线颜色
- 13. Matplotlib ColorbarBase:删除颜色分隔
- 14. 如何设置Google地理区域的区域颜色?
- 15. 如何更改颜色UINavigation栏的分隔线
- 16. 如何更改PreferenceFragment警报对话框的分隔线颜色
- 17. 如何更改Android ListView分隔线的颜色?
- 18. 如何更改操作栏的分隔线颜色?
- 19. 如何更改Android DatePicker对话框的“分隔线”颜色
- 20. 如何更改NSSplitView中分隔线的颜色?
- 21. 如何更改Spinner的分隔线颜色?
- 22. 如何在iOS中更改UISplitView的分隔线颜色
- 23. 如何更改可折叠区域线条的颜色在Visual Studio2017分之2015
- 24. 如何删除AlertDialog周围的空白区域或颜色
- 25. 指定区域的颜色?
- 26. 如何设置步进颜色区域?
- 27. 设置背景颜色到ActionBar标签删除分隔线
- 28. 对话框的边框和分隔线颜色
- 29. 我们如何擦除线
- 30. HIGHCHARTS如何为阴影区域和区域图中的线制作单独的颜色
两点不做一个多边形,他们做一条线。显然,你不想删除AB所做的行的所有内容,因为在第二个图像中,垂直行的一部分会被截断。你真的*想要删除什么?您是否期望算法能够检测垂直线的右边缘并删除AB右边的所有内容?有一个决定,你没有给我们的标准。 – 2011-04-13 14:43:20
我想删除线段AB右侧的红色像素(以便最终结果是右侧的图片)。使用提供的算法[有](http://stackoverflow.com/questions/5630219/algorithm-to-find-the-coordinates-of-a-corner-in-a-simple-image)我会找到交点A和B.从那里,我想删除额外的红色部分。我同意删除该行以外的所有内容都不起作用,所以我正在寻找更好的算法。 – 2011-04-13 15:10:14
好吧,所以基本上你想删除一个边是AB的多边形,其余的都是追踪边的那个结点?那么多余的结点将永远不会自行循环或延伸超过图像的极限? – 2011-04-13 15:13:18