019のOpenCVの[研究ノート] Laplance演算子

ディレクトリ

I.はじめに

第二に、オペレータのレビュー

1、算子

2、ソーベル演算子

三、Laplanceオペレータ

説明するために1、

2、API

図3に示すように、コードショー


I.はじめに

ピットを埋めるために続けます。

あなたがOpenCVのプレゼンテーション、学習のチュートリアル、コードの実用的な、一般的なエラーと解決策についての学習に関連する他のコンテンツを表示したい場合は、直接私のOpenCVのカテゴリーを見ることができます:

【OpenCVの系列】ます。https://blog.csdn.net/shuiyixin/article/category/7581855

あなたはより多くの首長と通信するために、コンピュータビジョン、OpenCVの、機械学習、深い学習やその他の関連技術についての詳細を学びたい場合は、今私たちに参加するには、次のFanger魏コードをスキャン!

 

第二に、オペレータのレビュー

1、算子

私たちは、オペレータが話した最後の時間は、このレッスン我々は概念演算子を振り返ります:

狭いオペレータが実際に意味別の空間関数(またはそれ自体)1つの空間からマッピング関数

広く限り、オペレータは一般的に空間上の空間に拡張されるように定義され、それはベクトル空間、ノルム線型空間、計量ベクトル空間、又は缶さらに、バナッハ空間、ヒルベルト空間であってもよいです。オペレータはまた、カテゴリのような有界と非有界、線形および非線形に分割することができます。

 

2、ソーベル演算子

基本的な事実に由来するソーベル演算子、すなわち、エッジ部において、画素値が「スキップ」または大きな変化が生じます。このエッジの一次導関数におけるストライキの一部ならば、あなたは両極端の発生が表示されます。Nを以下に示します。

次のように勾配を対応する演算子でした。

 

三、Laplanceオペレータ

説明するために1、

次に、我々は新しい演算子を取得Laplance演算子

または画像の上に、その後、我々はまた、その二階微分を求めて、一次導関数を見つけます。この時間は、画像上の位置の最大変化を有し、二次導関数はゼロです。

まず、離散の一次関数計算方法を見てみましょう。

二次導関数は、一次導関数の導関数です。

画像は、2つの行方向、誘導体への2つの方向を有しているので。

ラプラス演算子::ラプラシアンは、OpenCVの関数cvが実装されています。実際には、勾配を用いてラプラシアン画像ので、それは、その計算を実行するためにソーベルオペレータの内部呼び出し。

 

2、API

私たちはAPIについて話次

void Laplacian( 
    InputArray src, 
    OutputArray dst, 
    int ddepth,  
    int ksize = 3,
    double scale = 1,                       
    double delta = 0, 
    int borderType = BORDER_DEFAULT 
);

次のように関数のパラメータは次のとおりです。

(1)InputArray型SRC、入力画像。

(2)OutputArray类型的dst ,输出图像,图像的大小、通道数和输入图像相同。

(3)int类型的ddepth,目标图像的所需深度。

(4)int类型的ksize,用于计算二阶导数滤波器的孔径大小。大小必须是正数和奇数。

(5)double类型的scale,计算拉普拉斯值的可选比例因子。默认情况下,不应用缩放。

(6)double类型的delta,在将筛选的像素存储到dst中之前添加到这些像素的可选值。说的有点专业了其实就是给所选的像素值添加一个值delta。

(7)int类型的borderType,用于推断图像外部像素的某种边界模式。有默认值BORDER_DEFAULT。

 

3、代码展示

我们这个函数只需要设置前两个参数,这个函数可以计算图像src的像素绝对值,输出到图像dst。

#include<iostream>
#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main()
{
	Mat img, gx, gy, src;

	img = imread("E:/image/girl2.png");
	if (!img.data)
	{
		cout << "could not load image !";
		return -1;
	}
	imshow("【输入图像】", img);

	Sobel(img, gx, CV_16S, 1, 0);
	Sobel(img, gy, CV_16S, 0, 1);

	convertScaleAbs(gx, gx);
	convertScaleAbs(gy, gy);
	addWeighted(gx, 0.5, gy, 0.5, 0, src);
	imshow("【输出图像】", src);

	waitKey(0);
	return 0;
}

4、执行结果

原图
Laplacian算子操作后

我们也把上节课的两个算子执行结果拿过来,进行对比:

Sobel算子操作后
Scharr算子

 

大家也可以自己尝试一下呀,一定要多做练习!

 

发布了266 篇原创文章 · 获赞 525 · 访问量 53万+

おすすめ

転載: blog.csdn.net/shuiyixin/article/details/104510390