[编辑]实现高斯差分

时间:2012-12-02 12:55:41

标签: c opencv

我不确定我是否采取了正确的方式。

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的正确方法是什么?我刚刚从维基的解释中尝试过它。但我无法像维基页面http://en.wikipedia.org/wiki/Difference_of_Gaussians

那样获得所需的图像

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中的含义?

1 个答案:

答案 0 :(得分:2)

如果您附加的图像是样本输出,则不一定看错。 DoG操作非常简单:使用两个不同大小的高斯模糊并计算差异图像。这似乎是你的代码正在做的事情,所以我说你做对了。

如果您的担忧源于查看维基百科的文章(图像主要是白色而不是黑色),那么它只是您拥有的图像的反转。我不担心。