日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

如何利用Python 進行邊緣檢測

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

為何檢測邊緣?

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

如何利用Python 進行邊緣檢測

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

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

如何進行邊緣檢測 —— 數學

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

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

如何利用Python 進行邊緣檢測

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

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

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

如何利用Python 進行邊緣檢測

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

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

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

如何利用Python 進行邊緣檢測

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

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

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

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

希望上文已經講清楚了這些理論!下面看一看代碼是如何實現的。

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

首先進行一些設置:

%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’)# 得到圖片的維數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’)# 得到圖片的維數n,m,d = img.shape# 初始化邊緣圖像edges_img = img.copy()# 循環遍歷圖片的全部像素for row in range(3, n-2):for col in range(3, m-2):# 在當前位置創建一個 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()

有幾點需要注意:

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

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

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

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

如何利用Python 進行邊緣檢測

得到邊緣檢測的結果:

如何利用Python 進行邊緣檢測

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

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

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产+成+人+亚洲欧洲在线| 秋霞影视一区二区三区| 久久国产电影| 亚洲成人不卡| 99久久亚洲精品蜜臀| 亚洲福利一区| 中文在线一区| 蜜臀久久99精品久久久画质超高清| 国产精品一区毛片| 综合视频一区| 亚洲一区二区三区无吗| 老司机精品久久| 丝袜美腿亚洲色图| 日韩一区欧美二区| 日本亚洲视频在线| 日韩高清在线不卡| 国产欧美日韩影院| 欧美91在线| 色爱综合网欧美| av高清不卡| 欧美99久久| 日本欧洲一区二区| 蜜桃久久久久久| 久久国内精品自在自线400部| 日本成人在线一区| 国产精品久久久亚洲一区| 精品精品国产三级a∨在线| 久草免费在线视频| 黄色精品网站| 亚洲精品大片| 欧美aa在线视频| 久久久久91| 日韩精品一卡二卡三卡四卡无卡| 日韩高清国产一区在线| 国产在线观看91一区二区三区| 精品免费av在线| 亚洲自拍另类| 欧美亚洲综合视频| 日韩av片子| 亚洲精品2区| 日本免费一区二区视频| 日韩a一区二区| 日韩影院在线观看| 久久av超碰| 久久精品av| 日本在线不卡视频一二三区| 国内不卡的一区二区三区中文字幕| 婷婷中文字幕一区| 欧美一级网址| 99久久夜色精品国产亚洲狼| 婷婷成人av| 日韩和的一区二在线| 综合五月婷婷| 日韩国产欧美一区二区| 欧美片第1页综合| 国产精品字幕| 欧美一区久久| 免费观看久久av| 国产欧美自拍一区| 亚洲高清成人| 国产精品久一| 久久高清一区| 国产一区二区三区精品在线观看| 在线 亚洲欧美在线综合一区| 国产精品一在线观看| 不卡中文字幕| 久久中文字幕一区二区三区| 黄色亚洲大片免费在线观看| 久久精品国产999大香线蕉 | 日韩在线一二三区| 岛国精品一区| 亚洲精品影视| 久久精品播放| 精品理论电影在线| 亚洲精品在线二区| 999国产精品视频| 免费亚洲婷婷| 免费在线看一区| 国产美女高潮在线观看| 日本免费新一区视频| 伊人精品在线| 日本精品在线中文字幕| 国产欧美一区二区三区精品观看| 伊人久久婷婷| 深夜福利视频一区二区| 国产欧美日韩亚洲一区二区三区| 女同性一区二区三区人了人一| 国产精品流白浆在线观看| 老司机精品久久| 99热国内精品| 国产成人免费| 国产精品极品| 日本亚洲最大的色成网站www | 日韩av二区在线播放| 亚洲成人一区| av在线资源| 国产精品黄色| 奇米狠狠一区二区三区| 石原莉奈一区二区三区在线观看| 亚洲午夜一级| 成人久久一区| 精品视频97| 国产日韩欧美在线播放不卡| 亚洲理论在线| 视频一区二区三区在线| 亚洲精品成人| 好吊一区二区三区| 91精品国产乱码久久久久久久| 精品国产一区二区三区噜噜噜| 日韩动漫一区| 日本色综合中文字幕| 蜜桃视频免费观看一区| 国产亚洲综合精品| 99热精品在线| 欧美精品九九| 九一精品国产| 久久国产日本精品| 欧洲亚洲一区二区三区| 深夜福利一区| 国产欧美日韩一区二区三区四区 | 在线免费观看亚洲| 亚洲激情中文| 在线综合亚洲| 午夜国产欧美理论在线播放| 激情久久久久久| 免费国产自久久久久三四区久久| 久久精品国产www456c0m| 欧美不卡高清一区二区三区| 久久精品二区三区| 激情欧美一区二区三区| 在线日韩视频| 国产视频一区在线观看一区免费| 成人av二区| 亚洲伦乱视频| 亚洲高清成人| 野花国产精品入口| 天堂av在线一区| 免费成人av在线播放| 亚洲三级精品| 日韩精品国产欧美| 国产精品蜜月aⅴ在线| 国产精品入口久久| 欧美激情一区| 国产一区国产二区国产三区| 激情欧美日韩一区| 免费久久精品| 中文无码久久精品| 日韩av一级片| 久久精品理论片| 亚洲深夜影院| 欧美视频一区| 国产一区二区三区网| 久久裸体视频| 视频一区二区三区中文字幕| 青青在线精品| 精品国产亚洲日本| 成人羞羞视频在线看网址| 国产99久久| 在线精品亚洲| 国产精品对白久久久久粗| 日本精品黄色| 国产在线欧美| 亚久久调教视频| 久久99久久久精品欧美| 精品成人18| 国产欧美日韩免费观看| 久久99蜜桃| 国产一区亚洲| 久久国内精品视频| 水蜜桃精品av一区二区| 午夜久久tv| 国产欧美日韩一区二区三区在线| 樱桃视频成人在线观看| 狠狠爱www人成狠狠爱综合网| 四虎精品永久免费| 在线人成日本视频| 香蕉久久夜色精品国产| 婷婷综合一区| 国产精品97| 亚洲一区二区三区高清| 国产精品一区二区精品视频观看| 日韩欧美午夜| 免费在线观看视频一区| 免费在线观看一区| 成人av二区| 免费一级欧美在线观看视频| 久久视频精品| 国产区精品区| 久久福利一区| 国产黄大片在线观看| 免费成人av在线播放| 欧美激情网址| 亚洲视频www| 精品久久久久久久| 国产亚洲毛片| 国产激情久久| 美女精品在线| 日本成人手机在线| 在线日韩中文| 国产精品久久亚洲不卡|