[OpenCVの(C ++)]画像変換:エッジ検出

エッジ検出ステップ

  • フィルタリング
    、エッジ検出アルゴリズムは、主に画像強度に基づいて第一および第二の導関数であるが、通常はノイズの誘導体に非常に敏感であり、フィルタは、ノイズ関連のエッジ検出器の性能を改善するために使用されなければなりません。
  • 補強
    ベースエッジ強調は、各点近傍の画像変化値を決定することです。点の強度値のグレースケール画像強調アルゴリズム月周辺には有意な変化を強調しています。
  • 検出
    強調画像により、ポイントの勾配値が比較的大きい近所の多くは、多くの場合であるが、特定の用途では、これらの点はエッジ点を探していない、それはこれらの点のために、いくつかの方法を使用することを選択する必要があります。

キャニーオペレータ

キャニーエッジ検出オペレータは、マルチレベルのエッジ検出アルゴリズムです。
最適なエッジ検出の評価基準:低エラー率高い定着性最小応答これらの要件を満たすために、キャニーは、特定の方法満たす検索機能の関数であり、変分法を用いて。最適な検出は、4と指数関数の項で示されるが、それはガウス関数の一次導関数に非常に類似しています。

画像を操作するキャニーエッジ検出オペレータを使用してキャニー機能。

void Canny(
InputArray image, 
OutputArray edges, 
double threshold1, 
double threshold2, 
int apertureSize=3, 
bool L2gradient=false) ;

ここに画像を挿入説明

#include<opencv2/opencv.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;

int main()
{
	Mat srcImage = imread("fg.jpg");
	imshow("[原图]Canny边缘检测", srcImage);

	Mat dstImage, edge, grayImage;
	dstImage.create(srcImage.size(), srcImage.type());
	cvtColor(srcImage, grayImage, COLOR_BGR2GRAY);
	blur(grayImage, edge, Size(3, 3));
	Canny(edge, edge, 3, 9, 3);
	imshow("[效果图]Canny边缘检测", edge);
	waitKey(0);

	return 0;
}

次のように動作した結果は以下のとおりです。
ここに画像を挿入説明

ソーベル演算子

ソーベル演算子は、主に離散微分エッジ検出演算子で使用されています。これは微分ガウス導関数と近似関数の画像強度勾配を計算するための平滑組み合わせ。任意の点のオペレータにこのイメージを使用して、対応する勾配ベクトルまたはその法線ベクトルを生成したであろう。

第一、第二、第三、または差分の混合画像を計算するために、拡張ソーベルオペレータを使用してソーベル機能。

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

ここに画像を挿入説明

#include <opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>

using namespace cv;

int main()
{
	Mat grad_x, grad_y;
	Mat abs_grad_x, abs_grad_y, dst;

	Mat src = imread("fg.jpg");

	imshow("【原始图】sobel边缘检测", src);

	Sobel(src, grad_x, CV_16S, 1, 0, 3, 1, 1, BORDER_DEFAULT);
	convertScaleAbs(grad_x, abs_grad_x);
	imshow("【效果图】 X方向Sobel", abs_grad_x);

	Sobel(src, grad_y, CV_16S, 0, 1, 3, 1, 1, BORDER_DEFAULT);
	convertScaleAbs(grad_y, abs_grad_y);
	imshow("【效果图】Y方向Sobel", abs_grad_y);

	addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dst);
	imshow("【效果图】整体方向Sobel", dst);

	waitKey(0);
	return 0;
}

次のように動作した結果は以下のとおりです。
ここに画像を挿入説明

ラプラス算子

ラプラシアン演算子は、勾配Gradの発散DIVとして定義される二次微分演算子のn次元ユークリッド空間です。画像は、両方向に必要誘導体二次元であるため、画像処理の原理によると見ることができる、二次導関数は、エッジ検出のために使用することができます。使用ラプラス演算子は、導出プロセスが容易になります。
ラプラス演算子が定義:
ここに画像を挿入説明
ラプラス変換の結果は、変換後のラプラシアン画像関数を計算することができます。

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

ここに画像を挿入説明

#include <opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;

int main()
{
	Mat src, src_gray, dst, abs_dst;
 
	src = imread("fg.jpg");
 
	imshow("【原始图】图像Laplace变换", src);

	GaussianBlur(src, src, Size(3, 3), 0, 0, BORDER_DEFAULT);

	cvtColor(src, src_gray, CV_RGB2GRAY);

	Laplacian(src_gray, dst, CV_16S, 3, 1, 0, BORDER_DEFAULT);

	convertScaleAbs(dst, abs_dst);

	imshow("【效果图】图像Laplace变换", abs_dst);

	waitKey(0);

	return 0;
}

次のように動作した結果は以下のとおりです。
ここに画像を挿入説明

scharrフィルタ

我々は一般的ではなく、オペレータより、フィルターに直接scharrを言います。これは、OpenCVのオペレータSobelオペレータが存在し、主にあります。
核のないksizeサイズこと以外Scharrフィルタ演算子、ソーベルと実質的に同一である可変パラメータを用いて差分画像xまたはy方向を算出します。

void Scharr(
InputArray src,
OutputArray dst,
int ddepth,
int dx,
int dy,
double scale=1 ,
double delta=0 ,
intborderType=BORDER_DEFAULT) ;
#include <opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;



int main()
{

	Mat grad_x, grad_y;
	Mat abs_grad_x, abs_grad_y, dst;

	Mat src = imread("fg.jpg");

	imshow("【原始图】Scharr滤波器", src);

	Scharr(src, grad_x, CV_16S, 1, 0, 1, 0, BORDER_DEFAULT);
	convertScaleAbs(grad_x, abs_grad_x);
	imshow("【效果图】 X方向Scharr", abs_grad_x);

	Scharr(src, grad_y, CV_16S, 0, 1, 1, 0, BORDER_DEFAULT);
	convertScaleAbs(grad_y, abs_grad_y);
	imshow("【效果图】Y方向Scharr", abs_grad_y);

	addWeighted(abs_grad_x, 0.5, abs_grad_y, 0.5, 0, dst);

	imshow("【效果图】合并梯度后Scharr", dst);

	waitKey(0);
	return 0;
}

次のように動作した結果は以下のとおりです。
ここに画像を挿入説明

公開された31元の記事 ウォン称賛23 ビュー5410

おすすめ

転載: blog.csdn.net/weixin_43645790/article/details/104089225