图像的上采样即为使图像的长和宽变为原来的两倍,同理降采样降为原来的一半。
高斯不同即为两个不同次数高斯模糊之间的差值图像
可用归一化显示增强高斯不同。归一化的效果好于通常的增强对比对。
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
// 图像的上采样和降采样
// 图像金字塔
int main() {
Mat src1, src2, gray_src, dst;
src1 = imread("/Users/apple/Desktop/test.jpg", IMREAD_COLOR);
//src2 = imread("/Users/apple/Desktop/test2.jpg", IMREAD_COLOR);
if (src1.empty()) { // if (!src.data())
cout << "could not load image..." << endl;
return -1;
}
imshow("input", src1);
// 上采样
// pyrUp(src1, dst);
// imshow("output up", dst);
// 降采样
// pyrDown(src1, dst);
// imshow("output down", dst);
Mat g1, g2, DoG_img;
cvtColor(src1, gray_src, CV_BGR2GRAY);
GaussianBlur(gray_src, g1, Size(3, 3), 0);
GaussianBlur(g1, g2, Size(3, 3), 0);
// DoG: difference of GaussianBlur 高斯不同
subtract(g1, g2, DoG_img);
// 归一化显示, 注意一定要写上NORM_MINMAX
normalize(DoG_img, dst, 0, 255, NORM_MINMAX);
imshow("DoG", dst);
// 通常的增强对比度
Mat kernel = (Mat_<int>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
filter2D(DoG_img, dst, DoG_img.depth(), kernel);
imshow("DoG_filter2d", dst);
waitKey(0);
return 0;
}