答案 0 :(得分:0)
我确信没有最好的方法可以做任何事情。
您可以将图像缩小到仅帧的色彩范围(色调)。
然后使用Hough变换或角点检测器等找到该框。您也可以应用模板匹配来查找框的角,如果它们看起来总是一样的。
这个问题可以通过广泛的方式为您提供完整的解决方案。你为什么不把它分成小问题。
答案 1 :(得分:0)
不是一个完整或严格的解决方案,但答案可能有助于您解决问题。我选择使用安装在大多数Linux发行版上的ImageMagick,并且可以免费用于OSX和Windows。在Sourceforge处有一个名为im4java
的Java绑定(我不使用或不知道)。你也可以用PHP,Perl,C ++,C ......
无论如何,在命令行,您可以将手稿的第一帧([0]
)转换为色相/饱和度/亮度色彩空间并丢弃饱和度和亮度,这样您就可以使用Hue,就像这样:
convert manuscript.gif[0] -colorspace hsl -separate -delete 1,2 -blur 0x3 -contrast-stretch 10% -threshold 50% hue.png
然后我对比拉伸并保存为hue.png
。它看起来像这样:
然后我可以拍摄该图像(hue.png
)并在其上应用“连接组件分析”(也称为“Blob Analysis”),并丢弃所有的小斑点 - 斑点只是一个连续的区域。
convert hue.png \
-define connected-components:verbose=true \
-define connected-components:area-threshold=10000 \
-connected-components 8 -auto-level output.png
Objects (id: bounding-box centroid area mean-color):
6: 645x1033+50+78 372.4,594.0 663108 gray(0)
0: 851x1231+0+0 595.5,678.2 244279 gray(0)
2: 728x1123+9+36 376.7,604.3 140194 gray(255)
如果我在第一个黑框中画出红色,就像这样:
convert manuscript.gif[0] -fill none -stroke red -strokewidth 5 -draw "rectangle 50,78 695,1100" result.png
我会得到这个:
或者,我可以像这样裁剪:
convert manuscript.gif[0] -crop 645x1033+50+78 result.png
得到这个:
你可能不得不对数字和数值进行一些调整,但总体思路应该适用于你的问题。
答案 2 :(得分:-1)