2

次のコードでは、OpenCV で利用可能なソーベル演算子を使用して画像の勾配を計算できます。

IplImage* grad_x = cvCreateImage(cvGetSize(image),IPL_DEPTH_32F,1);
IplImage* grad_y = cvCreateImage(cvGetSize(image),IPL_DEPTH_32F,1);
cvSobel(image,grad_x,1,0,3);
cvSobel(image,grad_y,0,1,3);

関数によってエッジはどのように処理されcvSobel()ますか? この関数との違いは何ですかこれです これは?利用可能なオプションについて読みましborderTypeたが、これらのオプションのどれを使用するのが良いかわかりません。

さらに、画像の勾配を計算する前に平滑化フィルターを実行すると、どのような利点がありますか?

最後に、画像の勾配を計算した後、対応する角度と大きさを計算する方法は?

4

1 に答える 1

1

エッジ マップに関心がある場合は、OpenCVのCannyメソッドを検討する必要があります。はグラデーション イメージを返します。このイメージから、 thresholdSobelを使用した単純なしきい値処理を介してエッジ マップを導出するか、メソッドのようにもっと複雑なことを行うことができます。Canny

画像を平滑化する (たとえば、GaussianBlurblurを使用) と、操作によって拡大されたノイズ レベルが減少しSobelます。

勾配の大きさと位相を決定する方法を示す非常によく似た答えがここにあります。

それが役立つことを願っています!

于 2013-01-23T20:42:45.433 に答える