电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python OpenCV實現邊緣檢測

瀏覽:2日期:2022-08-06 15:48:00

本文實例為大家分享了Python OpenCV實現邊緣檢測的具體代碼,供大家參考,具體內容如下

1. Sobel 算子檢測

Sobel 算子是高斯平滑和微分運算的組合,抗噪能力很強,用途也很多,尤其是效率要求高但對細紋理不是很在意的時候。

對于不連續的函數,有:

Python OpenCV實現邊緣檢測

假設要處理的圖像為I,在兩個方向求導。

水平變化:用奇數大小的模板對圖像I卷積,結果為Gx。例如,當模板大小為3時,Gx為:

Python OpenCV實現邊緣檢測

垂直變化:用奇數大小的模板對圖像I卷積,結果為Gy。例如,當模板大小為3時,Gy為:

Python OpenCV實現邊緣檢測

在圖像的每個點,結合以上兩個結果,得到:

Python OpenCV實現邊緣檢測

極大值的位置是圖像的邊緣。

當核大小為3時,上述Sobel核可能會產生更明顯的誤差。 為了解決這個問題,可以使用 Scharr 函數。這個函數只對大小為 3 的核有效,運算速度和 Sobel 函數一樣快,但是結果更準確。 計算方法為:

Python OpenCV實現邊緣檢測

cv.Sobel(src, ddepth, dx, dy, dst, ksize, scale, delta, borderType)參數:src 傳入的圖像ddepth 圖像的深度dx、dy 指求導的階數,0表示這個方向上沒有求導,取值為0、1。ksize Sobel算子的大小,即卷積核的大小,必須為奇數1、3、5、7,默認為3。-1代表3x3的Scharr算子。scale 縮放導數的比例常數,默認情況為沒有伸縮系數。borderType 圖像邊界的模式,默認值為cv.BORDER_DEFAULT。

需要對x和y兩個方向都調用一次cv.Sobel()函數。然后,對每個方向調用cv.convertScaleAbs()函數將其轉回uint8格式,再調用cv2.addWeighted()函數將兩個方向組合起來。

2. Laplacian 算子檢測

Laplacian 使用二階導數來檢測邊緣。 因為圖像是二維的,所以我們需要從兩個方向求導:

Python OpenCV實現邊緣檢測

不連續函數的二階導數是:

Python OpenCV實現邊緣檢測

使用的卷積核是:

Python OpenCV實現邊緣檢測

cv.Laplacian(src, ddepth, ksize)參數:src 需要處理的圖像ddepth 圖像的深度,-1表示采用的是原圖像相同的深度,目標圖像的深度必須大于等于原圖像的深度ksize 算子的大小,即卷積核的大小,必須為1、3、5、7。

然后,對返回值調用cv.convertScaleAbs(res)即可獲得邊緣圖像。

3. Canny 邊緣檢測

Canny 邊緣檢測算法由4個步驟組成。

1)去噪。由于邊緣檢測容易受噪聲影響,首先使用5*5高斯濾波器去除噪聲。

2)計算圖像梯度。在平滑圖像上使用 Sobel 算子計算水平和垂直方向的一階導數(Gx 和 Gy)。 根據得到的兩個梯度圖(Gx和Gy)求出邊界的梯度和方向,公式如下:

Python OpenCV實現邊緣檢測

如果一個像素是一個邊緣,它的梯度方向總是垂直于邊緣。 梯度方向分為四類:垂直方向、水平方向和兩個對角線方向。

3)非極大值抑制。得到梯度的方向和大小后,掃描整個圖像去除那些非邊界點。 檢查每個像素點,看這個點的梯度是否在周圍具有相同梯度方向的點中最大。

Python OpenCV實現邊緣檢測

A點位于圖像的邊緣。在其梯度變化的方向,選擇像素B和C,檢查A點的梯度是否為極大值。 如果是極大值,則保留,否則A點將被抑制,最后得到的結果是邊緣細的二值圖像。

4)滯后閾值。現在來確定真正的邊界。我們設置了兩個閾值:minVal 和 maxVal。 當圖像的灰度梯度高于 maxVal 時,認為是真正的邊界,低于minVal 的邊界將被丟棄。 如果介于兩者之間,則取決于該點是否連接到確定為真的邊界點。 如果是,則認為是邊界點,如果不是,則將其丟棄。 minVal 較小的閾值將間斷的邊緣連接起來,maxVal 較大的閾值檢測圖像中明顯的邊緣。如下圖:

Python OpenCV實現邊緣檢測

A 高于閾值 maxVal,因此它是真正的邊界點。雖然 C 低于 maxVal 但高于 minVal 并與 A 相連,所以它也被視為真正的邊界點。 B 會被丟棄,因為它低于 maxVal ,并且沒有連接到真正的邊界點。 所以,選擇合適的 maxVal 和 minVal 對于獲得好的結果非常重要。

cv.Canny(image, threshold1, threshold2)參數:image 灰度圖threshold1 minval,較小的閾值threshold2 maxval,較大的閾值

例:使用Sobel、Laplacian、Canny算法檢測下面圖像的邊緣。

Python OpenCV實現邊緣檢測

import matplotlibimport cv2 as cvimport matplotlib.pyplot as plt font = { 'family': 'Microsoft YaHei'}matplotlib.rc('font', **font) img = cv.imread('./image/horse.jpg', 0) # Sobelx = cv.Sobel(img, cv.CV_16S, 1, 0)y = cv.Sobel(img, cv.CV_16S, 0, 1)absx = cv.convertScaleAbs(x)absy = cv.convertScaleAbs(y)res = cv.addWeighted(absx, 0.5, absy, 0.5, 0)plt.imshow(res, cmap=plt.cm.gray)plt.title('Sobel')plt.show() # Schaarx = cv.Sobel(img, cv.CV_16S, 1, 0, ksize=-1)y = cv.Sobel(img, cv.CV_16S, 0, 1, ksize=-1)absx = cv.convertScaleAbs(x)absy = cv.convertScaleAbs(y)res = cv.addWeighted(absx, 0.5, absy, 0.5, 0)plt.imshow(res, cmap=plt.cm.gray)plt.title('Schaar')plt.show() # Laplacianres = cv.Laplacian(img, cv.CV_16S)res = cv.convertScaleAbs(res)plt.imshow(res, cmap=plt.cm.gray)plt.title('Laplacian')plt.show() # Cannyres = cv.Canny(img, 0, 100)plt.imshow(res, cmap=plt.cm.gray)plt.title('Canny')plt.show()

輸出:

Python OpenCV實現邊緣檢測

Python OpenCV實現邊緣檢測

Python OpenCV實現邊緣檢測

Python OpenCV實現邊緣檢測

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 红外光谱仪维修_二手红外光谱仪_红外压片机_红外附件-天津博精仪器 | 通信天线厂家_室分八木天线_对数周期天线_天线加工厂_林创天线源头厂家 | crm客户关系管理系统,销售管理系统,crm系统,在线crm,移动crm系统 - 爱客crm | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 深圳3D打印服务-3D打印加工-手板模型加工厂-悟空打印坊 | 亮化工程,亮化设计,城市亮化工程,亮化资质合作,长沙亮化照明,杰奥思【官网】 | 中宏网-今日新闻-财经新闻| 吉祥新世纪铝塑板_生产铝塑板厂家_铝塑板生产厂家_临沂市兴达铝塑装饰材料有限公司 | 高压负荷开关-苏州雷尔沃电器有限公司 | 室内室外厚型|超薄型|非膨胀型钢结构防火涂料_隧道专用防火涂料厂家|电话|价格|批发|施工 | 压缩空气检测_气体_水质找上海京工-服务专业、价格合理 | 旅游规划_旅游策划_乡村旅游规划_景区规划设计_旅游规划设计公司-北京绿道联合旅游规划设计有限公司 | 体检车_移动CT车_CT检查车_CT车_深圳市艾克瑞电气有限公司移动CT体检车厂家-深圳市艾克瑞电气有限公司 | 知企服务-企业综合服务(ZiKeys.com)-品优低价、种类齐全、过程管理透明、速度快捷高效、放心服务,知企专家! | 拉力测试机|材料拉伸试验机|电子拉力机价格|万能试验机厂家|苏州皖仪实验仪器有限公司 | 威海防火彩钢板,威海岩棉复合板,威海彩钢瓦-文登区九龙岩棉复合板厂 | 贵阳用友软件,贵州财务软件,贵阳ERP软件_贵州优智信息技术有限公司 | 中药超微粉碎机(中药细胞级微粉碎)-百科 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | ALC墙板_ALC轻质隔墙板_隔音防火墙板_轻质隔墙材料-湖北博悦佳 | 沈阳缠绕包装机厂家直销-沈阳海鹞托盘缠绕包装机价格 | 定制液氮罐_小型气相液氮罐_自增压液氮罐_班德液氮罐厂家 | 东莞精密模具加工,精密连接器模具零件,自動機零件,冶工具加工-益久精密 | 临沂招聘网_人才市场_招聘信息_求职招聘找工作请认准【马头商标】 | 防腐储罐_塑料储罐_PE储罐厂家_淄博富邦滚塑防腐设备科技有限公司 | 能耗监测系统-节能监测系统-能源管理系统-三水智能化 | 外贸网站建设-外贸网站设计制作开发公司-外贸独立站建设【企术】 | 房屋质量检测-厂房抗震鉴定-玻璃幕墙检测-房屋安全鉴定机构 | 企小优-企业数字化转型服务商_网络推广_网络推广公司 | 地图标注-手机导航电子地图如何标注-房地产商场地图标记【DiTuBiaoZhu.net】 | 低温等离子清洗机(双气路进口)-嘉润万丰| 冷油器-冷油器换管改造-连云港灵动列管式冷油器生产厂家 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 新中天检测有限公司青岛分公司-山东|菏泽|济南|潍坊|泰安防雷检测验收 | 上海租车公司_上海包车_奔驰租赁_上海商务租车_上海谐焕租车 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 品牌策划-品牌设计-济南之式传媒广告有限公司官网-提供品牌整合丨影视创意丨公关活动丨数字营销丨自媒体运营丨数字营销 | 屏蔽泵厂家,化工屏蔽泵_维修-淄博泵业 | 洗石机-移动滚筒式,振动,螺旋,洗矿机-青州冠诚重工机械有限公司 | 密封无忧网 _ 专业的密封产品行业信息网|