1
이미지에서 점과 작은/짧은 선을 제거하는 함수 또는 알고리즘이 있습니까? 로봇에 대한 메트릭 맵을 만들었습니다. 나는 알고리즘을 사용하여 이미지에서 골격을 만들었다. 내가 원하는 것은 작은/짧은 선을 제거하고 부드러운 선을 얻기 위해 점을 제거하는 것입니다. picture을 참조하십시오. 나는 opencv에서 새롭다, 그래서 어쩌면 간단한 문제이다.opencv에서 점 및 작은 선 제거
의견이 있으십니까? 감사.
내가 일반적으로 점과 소음을 제거하려면이 코드#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "highgui.h"
#include <stdlib.h>
#include <stdio.h>
using namespace cv;
int main(int argc, char** argv)
{
cv::Mat img = cv::imread("test4.png", 0);
cv::Mat skel(img.size(), CV_8UC1, cv::Scalar(0));
cv::Mat temp(img.size(), CV_8UC1);
cv::Mat sub_mat = Mat::ones(img.size(), img.type())*255;
cv::Mat eroded;
cv::Mat element = cv::getStructuringElement(cv::MORPH_CROSS,
cv::Size(3, 3));
cv::subtract(sub_mat, img, img);
bool done;
do
{
cv::erode(img, eroded, element);
cv::dilate(eroded, temp, element); // temp = open(img)
cv::subtract(img, temp, temp);
cv::bitwise_or(skel, temp, skel);
eroded.copyTo(img);
done = (cv::countNonZero(img) == 0);
} while (!done);
cv::subtract(sub_mat, skel, skel);
cv:imwrite("skelet.png",skel);
cv::imshow("Skeleton", skel);
cv::waitKey(0);
return 0;
}
당신은 이미지에 필터의 일부를 시도 할 수 있습니다. 나는 중앙값이 좋은 선택 일 것이라고 생각합니다. – praks411