0

自分のやり方が正しいかどうかはわかりません。

IplImage *dog_1 = cvCreateImage(cvGetSize(oriImg), oriImg->depth, oriImg->nChannels);
IplImage *dog_2 = cvCreateImage(cvGetSize(oriImg), oriImg->depth, oriImg->nChannels);

int kernel2 = 1;
int kernel1 = 5;

cvSmooth(oriImg, dog_2, CV_GAUSSIAN, kernel2, kernel2);
cvSmooth(oriImg, dog_1, CV_GAUSSIAN, kernel1, kernel1);
cvSub(dog_2, dog_1, dst, 0);

私は正しい方法でやっていますか?上記はDOGを行う正しい方法ですか?wikiの説明を参考にやってみました。しかし、wikiページのように目的の画像を取得できませんでしたhttp://en.wikipedia.org/wiki/Difference_of_Gaussians

ガウスの差

【編集済】

ウィキページから引用します

「ガウスの差は、元のグレースケール画像のぼやけたバージョンを、元のぼやけの少ないバージョンから減算することを含むグレースケール画像強調アルゴリズムです。ぼやけた画像は、元のグレースケール画像を異なる標準を持つガウスカーネルで畳み込むことによって得られます。偏差。」

論文を読んでいる間、DoG 画像は

元の画像、I(x,y) -> ぼかし -> I1(x,y)

I1(x,y) -> ぼかし -> I2(x,y)

出力 = I2(x,y) - I1(x,y)

ご覧のとおり、元のイメージとは異なるカーネルを使用して I1 と I2 を取得するところとは少し異なります。

どちらが正しいですか、それとも wiki の意味を誤解していますか?

4

1 に答える 1