1. 程式人生 > >OpenCV影象邊緣檢測(Laplace演算法)

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