OpenCV影象邊緣檢測(Laplace演算法)
一、Laplace演算法簡介
二階微分在亮的一邊是負的,在暗的一邊是正的。常數部分為零。可以用來確定邊的準確位置,以及畫素在亮的一側還是暗的一側。
拉普拉斯運算元是最簡單的各向同性微分運算元,具有旋轉不變性。一個二維影象函式 的拉普拉斯變換是各向同性的二階導數,定義為:
其中:
由於 Laplacian使用了影象梯度,它內部的程式碼其實是呼叫了 Sobel 運算元的。同時,可以讓一幅影象減去它的Laplacian增強其對比對。
二、OpenCV中Laplacian函式解析
void Laplacian(InputArray src,
OutputArray dst,
int ddepth,
int ksize=1,
double scale=1,
double delta=0,
intborderType=BORDER_DEFAULT );
第一個引數,InputArray型別的image,輸入影象,即源影象,需為單通道8點陣圖像。
第二個引數,OutputArray型別的edges,輸出的邊緣圖,需要和源圖片有一樣的尺寸和通道數。
第三個引數,int型別的ddept,目標影象的深度。
第四個引數,int型別的ksize,用於計算二階導數的濾波器的孔徑尺寸,大小必須為正奇數,且有預設值1。
第五個引數,double型別的scale,計算拉普拉斯值的時候可選的比例因子,有預設值1。
第六個引數,double型別的delta,表示在結果存入目標圖(dst)之前可選的delta值,有預設值0。
第七個引數, int型別的borderType,邊界模式,預設值為BORDER_DEFAULT。
三、例項
1、程式碼
#include <opencv2/opencv.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
//【0】變數的定義
Mat src, src_gray, dst, abs_dst;
//【1】載入原始圖
src = imread("1.jpg");
//【2】顯示原始圖
imshow("【原始圖】影象Laplace變換" , src);
//【3】使用高斯濾波消除噪聲
GaussianBlur(src, src, Size(3, 3), 0, 0, BORDER_DEFAULT);
//【4】轉換為灰度圖
cvtColor(src, src_gray, CV_RGB2GRAY);
//【5】使用Laplace函式
Laplacian(src_gray, dst, CV_16S, 3, 1, 0, BORDER_DEFAULT);
//【6】計算絕對值,並將結果轉換成8位
convertScaleAbs(dst, abs_dst);
//【7】顯示效果圖
imshow("【效果圖】影象Laplace變換", abs_dst);
waitKey(0);
return 0;
}
2、執行結果
(1)原影象
(2)Laplace轉換影象
相關推薦
OpenCV影象邊緣檢測(Laplace演算法)
一、Laplace演算法簡介 二階微分在亮的一邊是負的,在暗的一邊是正的。常數部分為零。可以用來確定邊的準確位置,以及畫素在亮的一側還是暗的一側。 拉普拉斯運算元是最簡單的各向同性微分運算元,具有旋轉不變性。一個二維影象函式 的拉普拉斯變換是各向同性
【OpenCV影象處理】二十二、影象邊緣檢測(上)
→影象邊緣檢測的目的是檢測鄰域內灰度明顯變化的畫素,常用一階差分和二階差分來進行邊緣檢測 →數字影象中的邊緣是由鄰域內灰度值明顯變化的畫素構成,邊緣檢測主要是影象灰度的度量檢測和定位 →影象的邊緣有方向和幅值兩個屬性,沿邊緣方向畫素灰度值變化平緩或不發生變化,而垂直於邊緣方
【OpenCV影象處理】二十三、影象邊緣檢測(下)
(1)Prewitt邊緣檢測運算元 →prewitt邊緣檢測運算元是另一種常用的一階邊緣檢測運算元,這個運算元對於噪聲有抑制的作用。 Prewittt邊緣檢測的原理和Sobel邊緣檢測類似,都是在影象空間利用兩個方向模板與影象進行鄰域卷積來完成的,分別對水平和垂直方向邊緣進
【轉】Python+opencv利用sobel進行邊緣檢測(細節講解)
#! usr/bin/env python # coding:utf-8 # 2018年7月2日06:48:35 # 2018年7月2日23:11:59 import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2
OpenCV—python 邊緣檢測(Canny)
一、OpenCV-Python 中 Canny() 引數 """ cv2.Canny(image, # 輸入原圖(必須為單通道圖) threshold1,
數字影象處理筆記——邊緣檢測(Edge detection)
邊緣檢測 我們之前講邊緣檢測的時候講到了一階導和二階導,理想邊緣的畫素值是跳變的,而斜坡邊緣的畫素值是漸變的。我們在求一階導的時候導數值大的地方可以看做邊緣;若是對於斜坡邊緣,我們不想得到一長條邊緣,而只想得到這個漸變的中央點時,我們可以看二階導,二階導只在邊緣開始與結束的地方會出現,因此我們只
Python OpenCV _5邊緣檢測(Sobel運算元,Laplacian運算元,Canny運算元)
Python OpenCV這個初級影象處理系列是參考他人的文章寫的,有些地方做了一些改動,沒有太多理論,側重程式碼實現,主要目的是將這些基本操作程式碼系統地梳理一遍,也是為了以後能快速查詢。 此係列原始碼在我的GitHub裡:https://github.com/yeyujujishou19/P
影象目標檢測(Object Detection)原理與實現(三)
基於霍夫森林的目標檢測 上節說了霍夫變換(HT)和廣義霍夫變換(GHT),今天就接著廣義霍夫變換說下去,在廣義霍夫變換中,每個投票元素(比如邊緣畫素中的點)在霍夫空間中累加投票的權重是相等的,每個元素投票的權重互不影響,這其實是假設了影象空間中的每個畫
利用opencv實現人臉檢測(C++版)
小編所有的帖子都是基於unbuntu系統的,當然稍作修改同樣試用於windows的,經過小編的絞盡腦汁,把剛剛發的那篇python 實現人臉和眼睛的檢測的程式用C++ 實現了,當然,也參考了不少大神的部落格,下面我們就一起來看看: Linux系統下安裝open
opencv影象邊緣檢測
邊緣檢測檢測 &&邊緣檢測可以提取影象重要輪廓資訊,減少影象內容,可以用於分割影象,做特徵 提取 &&邊緣檢測的一般步驟 濾波——(濾出噪聲對檢測邊緣的影響) 濾高頻 增強——(可以將畫素鄰域強度變化凸顯出來–梯度運算元)
影象目標檢測(Object Detection)原理與實現(一)
基於閾值影象處理的目標檢測 從今天起開始要寫一些關於目標檢測的文章,涵蓋從簡單的閾值影象處理檢測、霍夫變換(hough transform)檢測、模版匹配檢測(剛體匹配)、AAM+ASM+ACM(非剛體)匹配檢測到近代機器學習方法檢測,儘量貼一些程式
OpenCV邊緣檢測三種演算法(canny、sobel、laplacian)
Canny演算法 #include<opencv2\opencv.hpp> #include<opencv2\highgui\highgui.hpp> using namespace std; using namespace cv; //邊緣檢測 int mai
數字影象處理筆記(十一):邊緣檢測演算法
1 - 引言 在影象識別中,如果可以將影象感興趣的物體或區別分割出來,無疑可以增加我們影象識別的準確率,傳統的數字影象處理中的分割方法多數基於灰度值的兩個基本性質 不連續性、 以灰度突變為基礎分割一副影象,比如影象的邊緣 相似性 根據一組預定義的準則將一副影象分割為相似
OpenCV計算機視覺學習(13)——影象特徵點檢測(Harris角點檢測,sift演算法)
如果需要處理的原圖及程式碼,請移步小編的GitHub地址 傳送門:請點選我 如果點選有誤:https://github.com/LeBron-Jian/ComputerVisionPractice 前言 特徵點檢測廣泛應用到目標匹配,目標跟蹤,三維重建等應用中,在進行目標建模時會對影象進行目標特徵
OpenCV——邊緣檢測(sobel算子、Laplacian算子、scharr濾波器)
scale 變換 得到 疊加 操作 fault sch laplacian 技術 1 #include <opencv2/opencv.hpp> 2 #include <iostream> 3 4 using nam
OpenCV探索之路(六):邊緣檢測(canny、sobel、laplacian)
邊緣檢測的一般步驟: 濾波——消除噪聲 增強——使邊界輪廓更加明顯 檢測——選出邊緣點 Canny演算法 Canny邊緣檢測演算法被很多人推崇為當今最優秀的邊緣檢測演算法,所以我們第一個就介紹他。 opencv中提供了Canny函式。 #include<
halcon影象邊緣提取(邊緣檢測)
一、閾值分割: 分為:全域性閾值、區域性閾值、直方圖自動閾值(自適應閾值)。 適用於:背景與目標占據不同的灰度級範圍的影象。 二、邊緣檢測: 由於邊緣和
邊緣檢測之Canny演算法_Qt實現(C++)
邊緣檢測之Canny演算法_Qt實現(C++) Canny邊緣檢測演算法的簡單介紹 Canny的目標是找到一個最優的邊緣檢測演算法,最優邊緣檢測的含義是: 好的檢測 - 演算法能夠儘可能多地標識出影象中的實際邊緣。 好的定位 - 標識出的
opencv影象特徵檢測及匹配(harris,sift,surf,fast,breif,orb,BFmatch,FlannBasedMatcher)
本文簡單概括各種演算法的提出背景及opencv實現,對具體原理不做討論一般而言,一個物體的角點最能夠代表物體的特徵,所以所謂的特徵檢測又叫角點(Corner)檢測harris是最早提出的特徵提取演算法:opencv實現如下:dst=cv2.cornerHarris(gray,
影象邊緣檢測—sobel運算元(灰度影象,彩色影象)
void CShowPicView::Ontwodimension() { CShowPicDoc* pDoc = GetDocument(); CDC* pDC=GetDC(); // 字串 CString str; int x,y; int i,n; x=intHeight; y=int