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

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

如何利用Python 進行邊緣檢測

瀏覽:4日期:2022-07-08 13:34:20

為何檢測邊緣?

我們首先應該了解的問題是:“為什么要費盡心思去做邊緣檢測?”除了它的效果很酷外,為什么邊緣檢測還是一種實用的技術?為了更好地解答這個問題,請仔細思考并對比下面的風車圖片和它的“僅含邊緣的圖”:

如何利用Python 進行邊緣檢測

可以看到,左邊的原始圖像有著各種各樣的色彩、陰影,而右邊的“僅含邊緣的圖”是黑白的。如果有人問,哪一張圖片需要更多的存儲空間,你肯定會告訴他原始圖像會占用更多空間。這就是邊緣檢測的意義:通過對圖片進行邊緣檢測,丟棄大多數(shù)的細節(jié),從而得到“更輕量化”的圖片。

因此,在無須保存圖像的所有復雜細節(jié),而 “只關心圖像的整體形狀” 的情況下,邊緣檢測會非常有用。

如何進行邊緣檢測 —— 數(shù)學

在討論代碼實現(xiàn)前,讓我們先快速瀏覽一下邊緣檢測背后的數(shù)學原理。作為人類,我們非常擅長識別圖像中的“邊”,那如何讓計算機做到同樣的事呢?

首先,假設有一張很簡單的圖片,在白色背景上有一個黑色的正方形:

如何利用Python 進行邊緣檢測

在這個例子中,由于處理的是黑白圖片,因此我們可以考慮將圖中的每個像素的值都用 0(黑色) 或 1(白色) 來表示。除了黑白圖片,同樣的理論也完全適用于彩色圖像。

現(xiàn)在,我們需要判斷上圖中綠色高亮的像素是不是這個圖像邊緣的一部分。作為人類,我們當然可以認出它是圖像的邊緣;但如何讓計算機利用相鄰的像素來得到同樣的結果呢?

我們以綠色高亮的像素為中心,設定一個 3 x 3 像素大小的小框,在圖中以紅色示意。接著,對這個小方框“應用”一個過濾器(filter):

如何利用Python 進行邊緣檢測

上圖展示了我們將要“應用”的過濾器。乍一看上去很神秘,讓我們仔細研究它做的事情:當我們說 “將過濾器應用于一小塊局部像素塊” 時,具體是指紅色框中的每個像素與過濾器中與之位置對應的像素進行相乘。因此,紅色框中左上角像素值為 1,而過濾器中左上角像素值為 -1,它們相乘得到 -1,這也就是結果圖中左上角像素顯示的值。結果圖中的每個像素都是用這種方式得到的。

下一步是對過濾結果中的所有像素值求和,得到 -4。請注意,-4 其實是我們應用這個過濾器可獲得的“最小”值(因為原始圖片中的像素值只能在 0 到 1 之間)。因此,當獲得 -4 這個最小值的時候,我們就能知道,對應的像素點是圖像中正方形頂部豎直方向邊緣的一部分。

為了更好地掌握這種變換,我們可以看看將此過濾器應用于圖中正方形底邊上的一個像素會發(fā)生什么:

如何利用Python 進行邊緣檢測

可以看到,我們得到了與前文相似的結果,相加之后得到的結果是 4,這是應用此過濾器能得到的最大值。因此,由于我們得到了 4 這一最大值,可以知道這個像素是圖像中正方形底部豎直方向邊緣的一部分。

為了把這些值映射到 0-1 的范圍內,我們可以簡單地給其加上 4 再除以 8,這樣就能把 -4 映射成 0(黑色),把 4 映射成 1(白色)。因此,我們將這種過濾器稱為縱向 Sobel 過濾器,可以用它輕松檢測圖像中垂直方向的邊緣。

那如何檢測水平方向的邊緣呢?只需簡單地將縱向過濾器進行轉置(按照其數(shù)值矩陣的對角線進行翻轉)就能得到一個新的過濾器,可以用于檢測水平方向的邊緣。

如果需要同時檢測水平方向、垂直方向以及介于兩者之間的邊緣,我們可以把縱向過濾器得分和橫向過濾器得分進行結合,這個步驟在后面的代碼中將有所體現(xiàn)。

希望上文已經(jīng)講清楚了這些理論!下面看一看代碼是如何實現(xiàn)的。

如何進行邊緣檢測 —— 代碼

首先進行一些設置:

%matplotlib inlineimport numpy as npimport matplotlib.pyplot as plt# 定義縱向過濾器vertical_filter = [[-1,-2,-1], [0,0,0], [1,2,1]]# 定義橫向過濾器horizontal_filter = [[-1,0,1], [-2,0,2], [-1,0,1]]# 讀取紙風車的示例圖片“pinwheel.jpg”img = plt.imread(’pinwheel.jpg’)# 得到圖片的維數(shù)n,m,d = img.shape# 初始化邊緣圖像edges_img = img.copy()

你可以把代碼中的“pinwheel.jpg”替換成其它你想要找出邊緣的圖片文件!需要確保此文件和代碼在同一工作目錄中。

接著編寫邊緣檢測代碼本身:

%matplotlib inlineimport numpy as npimport matplotlib.pyplot as plt# 定義縱向過濾器vertical_filter = [[-1,-2,-1], [0,0,0], [1,2,1]]# 定義橫向過濾器horizontal_filter = [[-1,0,1], [-2,0,2], [-1,0,1]]# 讀取紙風車的示例圖片“pinwheel.jpg”img = plt.imread(’pinwheel.jpg’)# 得到圖片的維數(shù)n,m,d = img.shape# 初始化邊緣圖像edges_img = img.copy()# 循環(huán)遍歷圖片的全部像素for row in range(3, n-2):for col in range(3, m-2):# 在當前位置創(chuàng)建一個 3x3 的小方框local_pixels = img[row-1:row+2, col-1:col+2, 0]# 應用縱向過濾器vertical_transformed_pixels = vertical_filter*local_pixels# 計算縱向邊緣得分vertical_score = vertical_transformed_pixels.sum()/4# 應用橫向過濾器horizontal_transformed_pixels = horizontal_filter*local_pixels# 計算橫向邊緣得分horizontal_score = horizontal_transformed_pixels.sum()/4# 將縱向得分與橫向得分結合,得到此像素總的邊緣得分edge_score = (vertical_score**2 + horizontal_score**2)**.5# 將邊緣得分插入邊緣圖像中edges_img[row, col] = [edge_score]*3# 對邊緣圖像中的得分值歸一化,防止得分超出 0-1 的范圍edges_img = edges_img/edges_img.max()

有幾點需要注意:

在圖片的邊界像素上,我們無法創(chuàng)建完整的 3 x 3 小方框,因此在圖片的四周會有一個細邊框。

既然是同時檢測水平方向和垂直方向的邊緣,我們可以直接將原始的縱向得分與橫向得分分別除以 4(而不像前文描述的分別加 4 再除以 8)。這個改動無傷大雅,反而可以更好地突出圖像的邊緣。

將縱向得分與橫向得分結合起來時,有可能會導致最終的邊緣得分超出 0-1 的范圍,因此最后還需要重新對最終得分進行標準化。

在更復雜的圖片上運行上述代碼:

如何利用Python 進行邊緣檢測

得到邊緣檢測的結果:

如何利用Python 進行邊緣檢測

以上就是本文的全部內容了!希望你了解到了一點新知識

到此這篇關于如何利用Python 進行邊緣檢測的文章就介紹到這了,更多相關python 邊緣檢測內容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 哲力实业_专注汽车涂料汽车漆研发生产_汽车漆|修补油漆品牌厂家 长沙一级消防工程公司_智能化弱电_机电安装_亮化工程专业施工承包_湖南公共安全工程有限公司 | 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | SPC工作站-连杆综合检具-表盘气动量仪-内孔缺陷检测仪-杭州朗多检测仪器有限公司 | 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | 拉力机-拉力试验机-万能试验机-电子拉力机-拉伸试验机-剥离强度试验机-苏州皖仪实验仪器有限公司 | 北京自然绿环境科技发展有限公司专业生产【洗车机_加油站洗车机-全自动洗车机】 | 聚丙烯酰胺_厂家_价格-河南唐达净水材料有限公司 | 冷油器-冷油器换管改造-连云港灵动列管式冷油器生产厂家 | 酒精检测棒,数显温湿度计,酒安酒精测试仪,酒精检测仪,呼气式酒精检测仪-郑州欧诺仪器有限公司 | STRO|DTRO-STRO反渗透膜(科普)_碟滤 | 炭黑吸油计_测试仪,单颗粒子硬度仪_ASTM标准炭黑自销-上海贺纳斯仪器仪表有限公司(HITEC中国办事处) | 全国国际学校排名_国际学校招生入学及学费-学校大全网 | 一航网络-软件测评官网| 旗杆生产厂家_不锈钢锥形旗杆价格_铝合金电动旗杆-上海锥升金属科技有限公司 | 杭州ROHS检测仪-XRF测试仪价格-百科 | 亿诺千企网-企业核心产品贸易| 派克防爆伺服电机品牌|国产防爆伺服电机|高低温伺服电机|杭州摩森机电科技有限公司 | 环氧乙烷灭菌器_压力蒸汽灭菌器_低温等离子过氧化氢灭菌器 _低温蒸汽甲醛灭菌器_清洗工作站_医用干燥柜_灭菌耗材-环氧乙烷灭菌器_脉动真空压力蒸汽灭菌器_低温等离子灭菌设备_河南省三强医疗器械有限责任公司 | 天一线缆邯郸有限公司_煤矿用电缆厂家_矿用光缆厂家_矿用控制电缆_矿用通信电缆-天一线缆邯郸有限公司 | GAST/BRIWATEC/CINCINNATI/KARL-KLEIN/ZIEHL-ABEGG风机|亚喜科技 | TPE塑胶原料-PPA|杜邦pom工程塑料、PPSU|PCTG材料、PC/PBT价格-悦诚塑胶 | 临朐空调移机_空调维修「空调回收」临朐二手空调 | 深圳南财多媒体有限公司介绍 | 英国公司注册-新加坡公司注册-香港公司开户-离岸公司账户-杭州商标注册-杭州优创企业 | 重庆磨床过滤机,重庆纸带过滤机,机床伸缩钣金,重庆机床钣金护罩-重庆达鸿兴精密机械制造有限公司 | 流程管理|流程管理软件|企业流程管理|微宏科技-AlphaFlow_流程管理系统软件服务商 | 超声波破碎仪-均质乳化机(供应杭州,上海,北京,广州,深圳,成都等地)-上海沪析实业有限公司 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 东莞螺丝|东莞螺丝厂|东莞不锈钢螺丝|东莞组合螺丝|东莞精密螺丝厂家-东莞利浩五金专业紧固件厂家 | 茅茅虫AI论文写作助手-免费AIGC论文查重_写毕业论文降重 | 订做不锈钢_不锈钢定做加工厂_不锈钢非标定制-重庆侨峰金属加工厂 | 罗茨真空机组,立式无油往复真空泵,2BV水环真空泵-力侨真空科技 | 轻型地埋电缆故障测试仪,频响法绕组变形测试仪,静荷式卧式拉力试验机-扬州苏电 | 活性炭厂家-蜂窝活性炭-粉状/柱状/果壳/椰壳活性炭-大千净化-活性炭 | 螺杆真空泵_耐腐蚀螺杆真空泵_水环真空泵_真空机组_烟台真空泵-烟台斯凯威真空 | 天坛家具官网| 福尔卡(北京)新型材料技术股份有限公司 | 齿轮减速机电机一体机_齿轮减速箱加电机一体化-德国BOSERL蜗轮蜗杆减速机电机生产厂家 | 温湿度记录纸_圆盘_横河记录纸|霍尼韦尔记录仪-广州汤米斯机电设备有限公司 | 开业庆典_舞龙舞狮_乔迁奠基仪式_开工仪式-神挚龙狮鼓乐文化传媒 | 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 |