gpt4 book ai didi

c++ - 调整Canny边缘算法中的阈值

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:53 25 4
gpt4 key购买 nike

我想尝试一下文本识别,所以我使用 opencv 来追踪边缘,使用 c++ 来寻找斜率、曲线等,边缘算法在大而整洁的字符集上运行良好,但当它遇到问题时小的打印文本或带有大量背景噪音的文本,如嵌入在验证码中的文本,它很挣扎并且看起来不完整,我猜是我没有正确设置阈值并尝试了不同的值但没有成功。

enter image description here

enter image description here

这是我的代码:

#include "cv.h"
#include "highgui.h"
using namespace cv;
const int low_threshold = 50;
const int high_threshold = 150;


int main()
{

IplImage* newImg;
IplImage* grayImg;
IplImage* cannyImg;

newImg = cvLoadImage("ocv.bmp",1);

grayImg = cvCreateImage( cvSize(newImg->width, newImg->height), IPL_DEPTH_8U, 1 );

cvCvtColor( newImg, grayImg, CV_BGR2GRAY );
cannyImg = cvCreateImage(cvGetSize(newImg), IPL_DEPTH_8U, 1);

cvCanny(grayImg, cannyImg, low_threshold, high_threshold, 3);
cvNamedWindow ("Source", 1);
cvNamedWindow ("Destination",1);
cvShowImage ("Source", newImg );
cvShowImage ("Destination", cannyImg );
cvWaitKey(0);
cvDestroyWindow ("Source" );
cvDestroyWindow ("Destination" );
cvReleaseImage (&newImg );
cvReleaseImage (&grayImg );
cvReleaseImage (&cannyImg );

return 0;

}

我浏览了整个网络,看到了一些复杂的阈值条件,例如本网站的这段代码:

% Set direction to either 0, 45, -45 or 90 depending on angle.
[x,y]=size(f1);
for i=1:x-1,
for j=1:y-1,
if ((gradAngle(i,j)>67.5 && gradAngle(i,j)<=90) || (gradAngle(i,j)>=-90 && gradAngle(i,j)<=-67.5))
gradDirection(i,j)=0;
elseif ((gradAngle(i,j)>22.5 && gradAngle(i,j)<=67.5))
gradDirection(i,j)=45;
elseif ((gradAngle(i,j)>-22.5 && gradAngle(i,j)<=22.5))
gradDirection(i,j)=90;
elseif ((gradAngle(i,j)>-67.5 && gradAngle(i,j)<=-22.5))
gradDirection(i,j)=-45;
end
end
end

如果这是解决方案,有人可以为我提供该算法的 C++ 等价物吗?如果不是,我还能做什么?

最佳答案

Canny 边缘检测器是一种多步检测器,使用滞后阈值(它使用两个阈值而不是一个阈值)和边缘跟踪(您的最后一个片段是此步骤的一部分)。我建议阅读 wikipedia首先进入。一种可能的解决方案是选择高阈值,例如70% 的图像像素将被归类为边缘(最初 - 您可以使用直方图快速完成此操作),而不是选择低阈值,例如40%的高阈值。尝试对图像 block 而不是整个图像执行边缘检测可能是个好主意,这样您的算法可以为不同区域计算不同的阈值。

请注意,CAPTCHA-s 被设计为难以分割,添加破坏边缘检测的噪声是实现这一目标的一种技术(您可能需要先平滑图像)。

关于c++ - 调整Canny边缘算法中的阈值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11377475/

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