我把我自己的也送进去。它使用hough()和houghpeaks()来校正图像,使矩形滤波器与框的边缘对齐。剩下的只是常规的过滤。我们感兴趣的参数是二值化灵敏度、过滤器宽度和bwareaopen()调用中指定的区域。
一个更健壮的解决方案可以在有限的角度范围内更好地使用hough(),以更好地识别框的边缘,而较少依赖过滤将框从文本中分离出来。这只是一个想法,并不是一个明确的建议。
inpict = imread (“ocrbox.jpg”);
inpict = rgb2gray(庄稼边界(inpict,[南南南南]));
inpict = ~ imbinarize (inpict“自适应”,“foregroundpolarity”,“黑暗”,“敏感”, 0.15);
P = houghpeaks (H, 1,“阈值”装天花板(0.3 *马克斯(H (:))));
inpict = imrotate(双(inpict), -th0,双线性的,“作物”);
Linemask = medfilt2(inpict,[1 w]) + medfilt2(inpict,[1 w]);
linemask = bwareaopen (linemask,500 > 0.5);
linemask = imdilate (linemask strel (“磁盘”5));
Inpict = bwareaopen(Inpict & ~linemask,200);
正如注释所述,cropborder()来自文件交换上的MIMT。这是必要的,因为提供的图像是一个保存的图像,带有不必要的填充。因为你有原始图像,你不需要裁剪任何东西。
不要通过保存图形来保存图像。保存实际的图像,而不是相当于图像的截图。