Quantcast
Channel: OpenCV Q&A Forum - Latest question feed
Viewing all articles
Browse latest Browse all 19555

line segment detector giving large number of lines

$
0
0
Hello, I'm new to OpenCV and new to extracting info from images. I have implemented the line segment detector to operate on an image that I have skeletonized (edges do not work for my purposes, I need centers of objects). The skeleton image is 8 bit single channel with values of 0 or 255. I want to find the lines in this image but the line segment detector (and the Hough transform) are returning a HUGE number of lines when there are really not that many. Since both the LSD and Hough are failing in similar ways, I suspect the input skeletonized image is the problem. I'm uncertain how to remedy the problem however since it is a fairly simple image with mostly zeros in it. Below is the code, I didn't include how I read in the images but you get the idea, I hope. the skeleton comes out exactly as I need, here is a pic.![image description](/upfiles/14743089084557414.jpg) Mat img8bit(ysize, xsize, CV_8U); Mat imgthresh(ysize, xsize, CV_8U); threshold(img8bit, imgthresh, 200, 255, CV_THRESH_BINARY); //this creates a Mat for storing the skeleton and sets it to zero Mat skel(img.size(), CV_8UC1, cv::Scalar(0)); //this Mat is for intermediate storage for computations Mat temp; //stores eroded image Mat eroded; Mat element = getStructuringElement(cv::MORPH_CROSS, cv::Size(3, 3)); Mat closing(ysize, xsize, CV_8U); //there are some holes in the circles, try to fill them in morphologyEx(imgthresh, closing, MORPH_CLOSE, element); //get skeleton bool done = false; while (!done) { erode(closing, eroded, element); dilate(eroded, temp, element); // temp = open(img) subtract(closing, temp, temp); bitwise_or(skel, temp, skel); eroded.copyTo(closing); done = (countNonZero(closing) == 0); } Ptr ls = createLineSegmentDetector(LSD_REFINE_STD); vector lines_std; // Detect the lines ls->detect(skel, lines_std); // Show found lines Mat drawnLines(img8bit); ls->drawSegments(drawnLines, lines_std); imshow("Standard refinement", drawnLines);

Viewing all articles
Browse latest Browse all 19555

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>