私は墓地の画像で近似セグメンテーションを行う方法を見つけようとしています(文化シーンのCBIRのコンテキストで-しかし、それはトピックではありません)。これまでのところ、私はこの戦略を使用しています:
- 画像を 2 回ぼかす (実験結果)
- Canny-Edge-Detector を適用する
輪郭を見つける
int main(int argc, const char* argv[]) { cout << "Starting " << endl; Mat sourceImage; sourceImage = imread("singlesegmentation/DSCN5204.JPG", CV_LOAD_IMAGE_COLOR); if (!sourceImage.data) { cout << "No Image found." << endl; return -1; } cv::Mat blurred = imagePro::blurrNtimes(2, sourceImage); cv::Mat target = edged::applyCanny(blurred); cout << "Canny applied " << endl; vector<vector<Point> > contours; vector<Vec4i> hierarchy; cv::Point offset; offset.x = sourceImage.rows / 2; offset.y = sourceImage.cols / 2; cv::findContours(target, contours, hierarchy, CV_RETR_TREE , CV_CHAIN_APPROX_SIMPLE, offset); cout << "Contours applied " << endl; int idx = 0; for (; idx >= 0; idx = hierarchy[idx][0]) { Scalar color(rand() & 255, rand() & 255, rand() & 255); drawContours(target, contours, idx, color, CV_FILLED, 8, hierarchy); } cout << "Lines applied " << endl; cv::namedWindow("Contour", CV_WINDOW_NORMAL); cv::imshow("Contour", target); cv::waitKey(0); return 0;
}
名前空間「imagePro」および「edged」には、画像をぼかしてさらに処理するための opencv の単純なコードが含まれています。コードは機能します。ここに例の写真があります: しかし今、私は画像をセグメント化する考えがありません. 長方形の石の内側から外側に行きたいのですが、線を見つけたら座標を覚えてから内容を切り取りたいです。アイデアやヒントがあればよろしくお願いします!