1. 程式人生 > >opencv影象邊緣檢測

opencv影象邊緣檢測

邊緣檢測檢測
&&邊緣檢測可以提取影象重要輪廓資訊,減少影象內容,可以用於分割影象,做特徵 提取
&&邊緣檢測的一般步驟
濾波——(濾出噪聲對檢測邊緣的影響) 濾高頻
增強——(可以將畫素鄰域強度變化凸顯出來–梯度運算元)變化率
檢測——(閾值方法確定邊緣)
&&常用邊緣檢測運算元
Canny運算元
Sobel運算元
Scharr運算元
Laplacian 運算元
Roberts運算元 ,,Prewitt運算元。。。。

1)Canny邊緣檢測
**消除噪聲:一般情況下使用高斯平滑濾波器卷積降噪
**計算梯度幅值和方向:安裝Sobel濾波器的步驟操作
**非極大值抑制:排除非邊緣畫素
**滯後閾值:滯後閾值需要兩個閾值(高閾值和低閾值):
如果某一畫素位置的幅值超過高閾值,該畫素被保留為邊緣畫素
如果某一畫素位置的幅值小於低閾值該畫素被排除
如果某一畫素位置的幅值在兩個閾值之間,該畫素僅僅在連線到一個高閾值的畫素時被保留
void Canny(InputArray image,OutputArray edges,double threshold1,double threshild2,int apertureSize=3,bool L2gradient=false);
src:輸入原影象(一般為單通道8點陣圖像)
dst:輸出邊緣影象要求和src一樣的尺寸和型別(單通道)
threshold1:滯後閾值低閾值(用於邊緣連線)
threshold2:滯後閾值高閾值(控制邊緣初始段)
推薦高低閾值比值在2:1到3:1之間
apertureSize:表示Sobel運算元孔徑的大小,預設為3
L2gradient:計算影象梯度幅值的標識
cvtColor(img,img,CV_BGR2GRAY);
Canny(img,img,30,100,3); 滑動條的使用

——————————————————————————————測攝像頭有沒有聚焦 聚焦會變白
2)Sobel運算元
是一個主要用於邊緣檢測的離散微分運算元,他結合了高斯平滑和微分求導,用來計算影象灰度函式的近似梯度
分別在xy兩個方向上求導 變化比較劇烈的求出來
void Sobel(InputArray src,OutputArray dst,int ddepth,int dx,indy,int ksize=3,double scale=1,double delta=0,int borderType=BORDER_DEFAULT);
src:輸入影象
dst:輸出影象要求和drc一樣的尺寸和型別
ddepth:輸出影象的深度,支援如下組合
若src.depth()=CV_8U,取ddepth=-1/CV_16S/CV_32F/CV_64F
若src.depth()=CV_16U/CV_16S,取ddepth=-1/CV_32F/CV_64F
若src.depth()=CV_32F取ddepth=-1/CV_32F/CV_64F
若src.depth()=CV_64F,取ddepth=-1/CV_64F
**dx: x方向上的差分階數
**dy:Y方向上的差分階數
**Ksize:預設值為3,表示Sobel核大小1,3,5,7
**delta():表示在結果存入目標圖之前可選的delta值,預設值0
borderType:邊緣模式,一般是預設

//對x,y求導的效果

Mat grad_x,grad_y;
Mat abs_grad_x,abs_grad_y,dst;
Mat img=imread("0.jpg",0);
imshow("src",img);
//X方向上的梯度
Sobel(img,grad_x,CV_16S,1,0,3,1,1BORDER_DERAULT);
convertScaleAbs(grad_x,abs_grad_x);//轉換為8為無符號
imshow("x方向",abs_grad_x);
//Y方向上的梯度
Sobel(img,grad_y,CV_16S,0,1,3,1,1,BORDER_DEFAULT);
convertScaleAbs(grad_y,abs_grad_y);
imshow("Y方向"
,abs_grad_y); addWeighted(abs_grad_x,0.5,abs_grad_y,0.5,0,dst);//合併0.5的權重 imshow("合併效果",dst);

相關推薦

OpenCV影象邊緣檢測(Laplace演算法)

一、Laplace演算法簡介   二階微分在亮的一邊是負的,在暗的一邊是正的。常數部分為零。可以用來確定邊的準確位置,以及畫素在亮的一側還是暗的一側。   拉普拉斯運算元是最簡單的各向同性微分運算元,具有旋轉不變性。一個二維影象函式 的拉普拉斯變換是各向同性

opencv影象邊緣檢測

邊緣檢測檢測 &&邊緣檢測可以提取影象重要輪廓資訊,減少影象內容,可以用於分割影象,做特徵 提取 &&邊緣檢測的一般步驟 濾波——(濾出噪聲對檢測邊緣的影響) 濾高頻 增強——(可以將畫素鄰域強度變化凸顯出來–梯度運算元)

openCV—Python(11)—— 影象邊緣檢測

一、函式簡介 1、laplacian運算元 函式原型:Laplacian(src, ddepth, dst=None, ksize=None, scale=None, delta=None, borderType=None) src:影象矩陣 dde

android studio 使用 jni 編譯 opencv 完整例項 之 影象邊緣檢測!從此在andrid中自由使用 影象匹配、識別、檢測

1 package io.github.froger.jni; 2 3 import android.app.Activity; 4 import android.graphics.Bitmap; 5 import android.graphics.drawable.BitmapDra

openCV實現影象邊緣檢測

最近自己在做一個有關影象處理的小專案,涉及到影象的邊緣檢測、直線檢測、輪廓檢測以及角點檢測等,本文首先介紹影象的邊緣檢測,使用的是Canny邊緣檢測演算法,具體程式碼以及檢測效果如下: 1、程式碼部分: // Image_Canny.cpp : 定義控制檯應用程式的入口點

OpenCV影象處理入門學習教程四】基於LoG運算元的影象邊緣檢測

一、基於LoG運算元的影象邊緣檢測原圖:1.LoG運算元與自定義濾波運算元進行比較的結果:2.LoG運算元的結果:3.自定義3*31 1 1 1 -8 1 1 1 1 濾波結果:二、程式碼解析下面是一段基於LoG運算元的影象邊緣檢測的程式碼,同時會生成兩個結果,一個是LoG運算元的結果,第二個是自

OpenCV影象處理】二十二、影象邊緣檢測(上)

→影象邊緣檢測的目的是檢測鄰域內灰度明顯變化的畫素,常用一階差分和二階差分來進行邊緣檢測 →數字影象中的邊緣是由鄰域內灰度值明顯變化的畫素構成,邊緣檢測主要是影象灰度的度量檢測和定位 →影象的邊緣有方向和幅值兩個屬性,沿邊緣方向畫素灰度值變化平緩或不發生變化,而垂直於邊緣方

OpenCV使用Canny邊緣檢測器實現影象邊緣檢測

效果圖 原始碼 Canny邊緣檢測器是一種被廣泛使用的演算法,並被認為是邊緣檢測最優的演算法,該方法使用了比高斯差分演算法更復雜的技巧,如多向灰度梯度和滯後閾值化。 Canny

Opencv學習之影象邊緣檢測

該部落格只為記錄點滴所學,若有誤導,還請大家原諒,並不吝賜教。          一直不太明白應用函式求導的方法能求出影象強度變化的邊緣,其實就是影象邊緣檢測。現在終於想通了,解釋如下。比如一張如下的圖片: 圖1 檢測邊緣可以檢測到狗和兔子的輪廓。因為它們的輪廓跟其周

opencv學習--opencv內的6種影象邊緣檢測演算法的實現

     如上篇部落格所述,影象邊緣檢測演算法主要有Sobel, Scarry, Canny, Laplacian,Prewitt, Marr-Hildresh,現在進行總結     1.Sobel運算元 Sobel運算元是主要用於邊緣檢測的離散微分運算元,它

OpenCV影象處理】二十三、影象邊緣檢測(下)

(1)Prewitt邊緣檢測運算元 →prewitt邊緣檢測運算元是另一種常用的一階邊緣檢測運算元,這個運算元對於噪聲有抑制的作用。 Prewittt邊緣檢測的原理和Sobel邊緣檢測類似,都是在影象空間利用兩個方向模板與影象進行鄰域卷積來完成的,分別對水平和垂直方向邊緣進

OpenCV高斯差分技術實現影象邊緣檢測

效果圖 原始碼 邊緣是影象中畫素亮度變化明顯的點。 高斯差分演算法步驟 將影象轉為灰度影象 // 原圖置灰 Imgproc.cvtColor(src, grayM

Python OpenCV _5邊緣檢測(Sobel運算元,Laplacian運算元,Canny運算元)

Python OpenCV這個初級影象處理系列是參考他人的文章寫的,有些地方做了一些改動,沒有太多理論,側重程式碼實現,主要目的是將這些基本操作程式碼系統地梳理一遍,也是為了以後能快速查詢。 此係列原始碼在我的GitHub裡:https://github.com/yeyujujishou19/P

python-OpenCV邊緣檢測

簡述 邊緣指畫素值急劇變化的位置。對於識別物體而言,邊緣起著非常重要的作用。邊緣檢測的目的是在不損害影象內容的情況下製作一個線圖。其方式依然是以卷積為核心操作。 知識點 1.有時需要將原圖片分別與若干個卷積核進行卷積,這時需要將各個卷積結果進行最終整合,整合的方式主要有以下四種方式

影象處理】RGB影象邊緣檢測

灰度圖邊緣檢測    在學習影象處理時,首先接觸到的就是灰度影象的邊緣檢測,這是影象處理最基礎的也是最重要的一環,熟悉影象邊緣檢測有助於我們學習其他的數字影象處理方法。由於影象的邊緣區域會存在明顯的畫素值階躍,因此邊緣檢測主要是通過獲得影象灰度梯度,進而通過梯

OpenCV—python 邊緣檢測(Canny)

一、OpenCV-Python 中 Canny() 引數 """ cv2.Canny(image, # 輸入原圖(必須為單通道圖) threshold1,

影象邊緣檢測——幾種影象邊緣檢測運算元的學習及python 實現

  本文學習利用python學習邊緣檢測的濾波器,首先讀入的圖片程式碼如下: import cv2 from pylab import * saber = cv2.imread("construction.jpg") saber = cv2.cvtColor(saber,cv2.COLOR_BGR2RG

影象邊緣檢測、角點特徵檢測以及SURF特徵提取

1.影象的邊緣檢測 影象的邊緣是指其周圍畫素灰度急劇變化的那些畫素的集合。邊緣檢測的基本思想是先檢測影象中的邊緣點,在按照某種策略將邊緣點連線成輪廓,從而構成分割區域。 利用edge對輸入的灰度影象進行邊緣檢測 I=imread(‘circuit

opencv影象特徵檢測及匹配(harris,sift,surf,fast,breif,orb,BFmatch,FlannBasedMatcher)

本文簡單概括各種演算法的提出背景及opencv實現,對具體原理不做討論一般而言,一個物體的角點最能夠代表物體的特徵,所以所謂的特徵檢測又叫角點(Corner)檢測harris是最早提出的特徵提取演算法:opencv實現如下:dst=cv2.cornerHarris(gray,

初學opencv/形態學邊緣檢測

形態學檢測邊緣的原理很簡單,在膨脹時,影象中的物體會想周圍“擴張”;腐蝕時,影象中的物體會“收縮”。比較這兩幅影象,由於其變化的區域只發生在邊緣。所以這時將兩幅影象相減,得到的就是影象中物體的邊緣。 #coding:utf-8 """ opencv形態學邊