کلا لبه یاب ها دو دسته هستند : بدون آموزش و با آموزش تقسیم .
بدون آموزش : این روش ها سربع از روش های با آموزش هستند که دو تا از معروف ترین آنها به شرح زیر است.
بی شک سریع ترین روش سوبل هستش که از همه روش های لبه یلبی سریع تره.خوب مشکل بزرگش دقت لبه هاست.یعنی از یک ابجکت مشخص تو شرایط نوری مختلف لبه های یکسان ندارید
روش بعدی Canny هستش که این روش از سوبل دقیق تره .این روش هم تو شرایط نوری مختلف خوب عمل نمی کنه علاوه بر اینها به 2 حد آستانه هم وابسته هستید که باید دستی تنظیم شه.البته از این روش هم می تونید برای تنظیم خودکار دو حد استانه استفاده کنید.
با آموزش : این روش ها کند تر هستند ولی دقت لبه های استخراج شده خیلی بالاتر از روش های بالاست.
از جمله مشکلات این روش ها زمان اجرایی و فایل مدل هستش
یکی از روش هایی که تو این دسته سرعتش از روش های دیگر بالاتر روش structured forests است که تو opencv پیاده سازی شده که به صورت زیر می تونید از آن استفاده کنید.
if ( image.empty() )
{
printf("Cannot read image file: %s\n", inFilename.c_str());
return -1;
}
image.convertTo(image, cv::DataType<float>::type, 1/255.0);
cv::Mat edges(image.size(), image.type());
cv::Ptr<StructuredEdgeDetection> pDollar =
createStructuredEdgeDetection(modelFilename);
pDollar->detectEdges(image, edges);
if ( outFilename == "" )
{
cv::namedWindow("edges", 1);
cv::imshow("edges", edges);
cv::waitKey(0);
}
else
cv::imwrite(outFilename, 255*edges);