图像的上采样即为使图像的长和宽变为原来的两倍,同理降采样降为原来的一半。
高斯不同即为两个不同次数高斯模糊之间的差值图像
可用归一化显示增强高斯不同。归一化的效果好于通常的增强对比对。
#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; }