Opencv3 C ++ VS2017スタディノート10画像ピラミッド-アップサンプリングとダウンサンプリング

  • 画像ピラミッド
    • 画像サイズを調整するための最も一般的な方法は、ズームインとズームアウトです。
    • 画像ピラミッドは、徐々に解像度を下げてピラミッド形状に配置された一連の画像コレクションです。ピラミッドの下部は処理される画像の高解像度表現であり、上部は低解像度の近似値です。
  • アップサンプリングとダウンサンプリング
    • サンプリングするポイントが多いほど、画像が鮮明になります。
    • アップサンプリングは解像度を拡張することです
      • API
        • pyrUp(src0、dst、Size(src0.cols * 2、src0.rows * 2));
    • ダウンサンプリングは解像度を下げることです
      • API
        • pyrDown(src0、bin、Size(src0.cols / 2、src0.rows / 2));
  • 画像ピラミッド分類:ガウスピラミッドとラプラシアンピラミッド
    • ガウスピラミッド
      • 主にダウンサンプリング、つまりピラミッドを登る
      • ステップ
      1. ガウスぼかしを実行する現在のレイヤーでガウスぼかし、つまりガウスカーネル畳み込み
      2. 現在のレイヤーの偶数の行と列を削除します
    • ラプラシアンピラミッド
      • 主にアップサンプリング、つまり下部ピラミッド
  • ガウス犬の違い
    • 同じ画像の異なるGaussianBlurパラメータによって取得された2つの画像を差し引くと、出力画像はDOGになります。
    • 理論
      • ディファレンシャルピラミッド、DOG(Difference of Gaussian)ピラミッドは、ガウスピラミッドに基づいて構築されます。実際、ガウスピラミッドを生成する目的は、DOGピラミッドを構築することです。DOGピラミッドの第1グループの第1層は、ガウスピラミッドの第1グループの第2層から第1グループの第1層を差し引くことによって得られます。類推により、各差分画像はレイヤーごとに生成され、すべての差分画像は差分ピラミッドを形成します。DOGピラミッドとして要約される0番目のグループの最初のレイヤーの画像は、ガウスピラミッドの0番目のグループから0番目のグループのi +1番目のレイヤーを差し引くことによって取得されます。
    • アルゴリズムの実装
      •     GaussianBlur(gray_src、g1、Size(3、3)、0、0);
            GaussianBlur(g1、g2、Size(5、5)、0、0);
            減算(g1、g2、dogImg);
      • 減算()ピクセルレベルの減算演算
#include "pch.h"
#include <iostream>
#include <opencv2/opencv.hpp>
#include <string>

using namespace std;
using namespace cv;

Mat src0, gray, bin, dst;
int main(int argc, char ** argv)
{
	src0 = imread("C:\\Users\\xujin\\Desktop\\test1.JPG");
	if (!src0.data)
	{
		cout << "no image";
		return -1;
	}
	namedWindow("src0_image", WINDOW_AUTOSIZE);
	imshow("src0_image", src0);
	//上采样
	pyrUp(src0, dst, Size(src0.cols*2, src0.rows*2));
	namedWindow("dst_image", WINDOW_AUTOSIZE);
	imshow("dst_image", dst);
	//降采样
	pyrDown(src0, bin, Size(src0.cols / 2, src0.rows / 2));
	namedWindow("bin_image", WINDOW_AUTOSIZE);
	imshow("bin_image", dst);
	//DOG 高斯不同
	Mat gray_src, g1, g2, dogImg;
	cvtColor(src0, gray_src, CV_BGR2GRAY);
	GaussianBlur(gray_src, g1, Size(3, 3), 0, 0);
	GaussianBlur(g1, g2, Size(5, 5), 0, 0);
	subtract(g1, g2, dogImg);
	namedWindow("dog_image", WINDOW_AUTOSIZE);
	//归一化显示
	//normalize(dogImg, dogImg, 255, NORM_MINMAX);
	imshow("dog_image", dogImg);

	waitKey(0);
	return 0;
}

記事の参照:https:  //blog.csdn.net/zhu_hongji/article/details/81536820

おすすめ

転載: blog.csdn.net/Mrsherlock_/article/details/104518395