自分のやり方が正しいかどうかはわかりません。
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 の意味を誤解していますか?