我无法从图像中删除虚假(不完全是假的,但我不需要的)边缘。
由于这是人耳的图像,我不想使用由耳朵以外的东西引起的边缘。
这是我用来显示这种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);
如何为任何类型的耳朵图像实现此删除?如果我没有弄错的话,如果我能检测到并去除低曲率的边缘,这应该是可以实现的,但我找不到办法做到这一点。