OpenCV C ++如何删除低曲率边缘?

时间:2016-01-12 18:39:37

标签: c++ opencv edge-detection

我无法从图像中删除虚假(不完全是假的,但我不需要的)边缘。

Image I want to remove edges from

由于这是人耳的图像,我不想使用由耳朵以外的东西引起的边缘。

Edges I want to remove

这是我用来显示这种Edge图像的C ++代码:

#include "opencv2\opencv.hpp"
#include "SkinSegmentator.h"
#include "AutoCannyDetector.h"


Mat referentImage, queryImage;    
loadByFilename(imageType, queryImage, IDstring);

int erosion_size = 6;
    Mat element = getStructuringElement(cv::MORPH_CROSS,
        cv::Size(2 * erosion_size + 1, 2 * erosion_size + 1),
        cv::Point(erosion_size, erosion_size));
//Dilating and eroding to eliminate very small edges
dilate(queryImage, queryImage, element);
erode(queryImage, queryImage, element);
skinSegmentator.segmentSkin(queryImage, false);
equalizeHist(queryImage, queryImage);
Mat queryEdge;
GaussianBlur(queryImage, queryEdge, Size(11, 11), 3);
autoCanny.detect(queryEdge);
namedWindow("Query Edge Map", WINDOW_AUTOSIZE);
imshow("Query Edge Map", queryEdge);

如何为任何类型的耳朵图像实现此删除?如果我没有弄错的话,如果我能检测到并去除低曲率的边缘,这应该是可以实现的,但我找不到办法做到这一点。

这是原始图像和皮肤分割: Original image Skin Segmentation

0 个答案:

没有答案