十三、圖像梯度

一、兩種算子

一階導數—Sobel算子

水平梯度:在這里插入圖片描述

垂直梯度:在這里插入圖片描述

最終圖像梯度:
在這里插入圖片描述
在這里插入圖片描述

二階導數—Laplacian算子

在二階導數的時候,最大變化處的值為零,即邊緣是零值。
常見的拉普拉斯算子:在這里插入圖片描述在這里插入圖片描述其所有元素之和為零。

二、Sobel算子

cv2.Sobel(image,cv2.CV_32F,1,0)image為代求的圖像;CV_32F為圖像的深度(32為float類型),255肯定不夠,故選擇大點
cv2.convertScaleAbs(grad_x)將計算出來的正負數全部轉換為正值,然后轉換到8位的圖像上去

import cv2
import numpy as np
from matplotlib import pyplot as pltdef sobel(image):grad_x = cv2.Sobel(image,cv2.CV_32F,1,0)grad_y = cv2.Sobel(image,cv2.CV_32F,0,1)gradx = cv2.convertScaleAbs(grad_x)grady = cv2.convertScaleAbs(grad_y)cv2.imshow("gradient-x",gradx)cv2.imshow("gradient-y",grady)gradxy = cv2.addWeighted(gradx,0.5,grady,0.5,0)cv2.imshow("gradient",gradxy)src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg")
cv2.imshow("image",src)
cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)
sobel(src)cv2.waitKey(0)
cv2.destroyAllWindows()

效果圖如下:
在這里插入圖片描述

三、Scharr算子(Sobel算子的增強版),但對噪聲更加敏感

import cv2
import numpy as np
from matplotlib import pyplot as pltdef sobel(image):grad_x = cv2.Scharr(image,cv2.CV_32F,1,0)grad_y = cv2.Scharr(image,cv2.CV_32F,0,1)gradx = cv2.convertScaleAbs(grad_x)grady = cv2.convertScaleAbs(grad_y)cv2.imshow("gradient-x",gradx)cv2.imshow("gradient-y",grady)gradxy = cv2.addWeighted(gradx,0.5,grady,0.5,0)cv2.imshow("gradient",gradxy)src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg")
cv2.imshow("image",src)
cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)
sobel(src)cv2.waitKey(0)
cv2.destroyAllWindows()

效果圖如下:
在這里插入圖片描述

四、Laplacian算子(直接調用API)

import cv2
import numpy as np
from matplotlib import pyplot as pltdef lapalian(image):dst = cv2.Laplacian(image,cv2.CV_32F)lpls = cv2.convertScaleAbs(dst)cv2.imshow("lapalian",lpls)src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg")
cv2.imshow("image",src)
cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)
lapalian(src)cv2.waitKey(0)
cv2.destroyAllWindows()

效果圖如下:
在這里插入圖片描述

五、Laplacian算子(自定義卷積核)

import cv2
import numpy as np
from matplotlib import pyplot as pltdef lapalian(image):#kernel = np.array([[1,1,1],[1,-8,1],[1,1,1]])kernel = np.array([[0,1,0],[1,-4,1],[0,1,0]])dst = cv2.filter2D(image,cv2.CV_32F,kernel=kernel)lpls = cv2.convertScaleAbs(dst)cv2.imshow("lapalian",lpls)src = cv2.imread(r"G:\Juptyer_workspace\study\opencv\opencv3\a1.jpg")
cv2.imshow("image",src)
cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)
lapalian(src)cv2.waitKey(0)
cv2.destroyAllWindows()

效果圖如下:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/377999.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/377999.shtml
英文地址,請注明出處:http://en.pswp.cn/news/377999.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java Formatter out()方法與示例

格式化程序類out()方法 (Formatter Class out() method) out() method is available in java.util package. out()方法在java.util包中可用。 out() method is used to get Appendable for the output. out()方法用于獲取輸出的Appendable。 out() method is a non-static meth…

SQL2008,SQL2005存儲過程解密

SQL2008,SQL2005存儲過程解密 下載:附件 SQL2008,SQL2005存儲過程解密第一步操作步驟:程序->Sql Server2005-> 配置工具-> Sql Server 外圍應用配置器-> 功能的外圍應用配置器-> DataBase Engine-> DAC -> 啟用遠程DAC 第二步&a…

LeetCode 257. 二叉樹的所有路徑 思考分析

目錄題目思路一:深度遞歸思路二:廣度迭代關于回溯題目 給定一個二叉樹,返回所有從根節點到葉子節點的路徑。 說明: 葉子節點是指沒有子節點的節點。 示例: 輸入: 輸出: [“1->2->5”, “1->3”] 解釋: 所有根節點到葉子節點的路…

自定義django的Template context processors

簡要步驟: 1.編輯一個函數: def media_url(request):from django.conf import settingsreturn {media_url: settings.MEDIA_URL}2.配置settings: TEMPLATE_CONTEXT_PROCESSORS (myapp.context_processors.media_url,) 3.確保幾點: 1&#xf…

十四、Canny邊緣提取

一、算法步驟 1,對圖像進行GaussianBlur(高斯模糊)消除一些噪聲 2,對圖像進行灰度轉換cvtColor 3,計算梯度Sobel/Scharr 4,非最大信號抑制 5,高低閾值輸出二值圖像 設定兩個閾值T1和T2,凡是高于T2的都保…

scanner close_Java Scanner close()方法與示例

scanner close掃描器類close()方法 (Scanner Class close() method) close() method is available in java.util package. close()方法在java.util包中可用。 close() method is used to close this Scanner object when opened otherwise this method does not affect. 當打開…

flex3.0中打包的方法swc

flex3.0中打包的方法: 1. 新建一個 flex library project 2. 彈出的對話框 點 next ,在Classes下,找到Main source folder 點瀏覽 3. 選擇你新建的文件夾 點 new 然后點擊 OK 4. 這個時候 Classes 下多了個src 文件夾,打開源文件夾&#xf…

Java Hashtable get()方法與示例

哈希表類的get()方法 (Hashtable Class get() method) get() method is available in java.util package. get()方法在java.util包中可用。 get() method is used to return the value associated with the given key element (key_ele) in this Hashtable. get()方法用于返回與…

圖解PCB布線數字地、模擬地、電源地,單點接地抗干擾!

我們在進行pcb布線時總會面臨一塊板上有兩種、三種地的情況,傻瓜式的做法當然是不管三七二十一,只要是地 就整塊敷銅了。這種對于低速板或者對干擾不敏感的板子來講還是沒問題的,否則可能導致板子就沒法正常工作了。當然若碰到一塊板子上有多…

十五、霍夫直線檢測

一、自定義 import cv2 import numpy as np from matplotlib import pyplot as pltdef line_detection(image):gray cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)edges cv2.Canny(gray,50,150,apertureSize3)lines cv2.HoughLines(edges,1,np.pi/180,200)for line in lines:rho…

xred520

Option ExplicitResponse.BufferTrueServer.ScriptTimeOut90 腳本超時時間(單位:秒)Session.Timeout60 Session過期時間(單位:分鐘)Response.Expires-1 Sub DataConn() On Error Resume Next Dim strConn If isSQL0 Then ACCESS數據庫 If EnableDataBaseCache 1 Then ACCESS數…

【C++ grammar】對象指針、對象數組、函數參數

目錄1、Object Pointer & Dynamic Object1. Accessing Object Members via Pointers2. Creating Dynamic Objects on Heap2、Array of Objects聲明方式3、Passing Objects to Functions1、Objects as Function Arguments (對象作為函數參數)2. Objects as Function Return …

Java Date toString()方法與示例

日期類toString()方法 (Date Class toString() method) toString() method is available in java.util package. toString()方法在java.util包中可用。 toString() method is for string denotation of this Date object or in other words we can say it denotes date in a st…

十六、霍夫圓形檢測

一、獲取圓形檢測原理 原圖如下: 選取一個圓的任意點設定為圓形進行繪制圓形,交與一點 再將平面直角坐標系上的各點,通過公式轉到極坐標上 很明顯的看出較亮的點為圓心,然后通過半徑進行繪制出圓。 二、實現步驟 由于霍夫圓檢…

商務智能與交易系統的區別

商務智能與交易系統的區別 1、系統設計的區別 商務智能與交易系統之間的差異主要體現在系統設計和數據類型上(見表 1.1 和表1.2)。交易系統把結構強加于商務之上,不管誰來進行一項交易活動, 都會遵循同樣的程序和規則,…

LeetCode 572. 另一個樹的子樹 思考分析

題目 給定兩個非空二叉樹 s 和 t,檢驗 s 中是否包含和 t 具有相同結構和節點值的子樹。s 的一個子樹包括 s 的一個節點和這個節點的所有子孫。s 也可以看做它自身的一棵子樹。 示例 1: 給定的樹 s: 示例 2: 給定的樹 s: 思路 思路:首先層序遍歷s樹…

2013.8.7Java語言基礎——數組

數組是數據類型一致的變量的集合。 一個:變量 一堆(多個):數組 數組語法: 1)數組變量(引用類型變量) 數組變量通過引用地址引用了數組(數組對象) 2&#xff0…

ruby array_Ruby中帶有示例的Array.select方法

ruby arrayArray.select方法 (Array.select Method) In the last articles, we have seen how to iterate over the instances of Array class? We have seen that we have got methods like Array.each, Array.reverse_each and Array.map for this purpose. In this article…

十七、輪廓發現

一、輪廓發現原理 輪廓發現是在圖像邊緣提取的基礎上尋找對象輪廓的方法,故邊緣提取的閾值的選定會影響到最終輪廓發現的結果。 其本質是基于二值圖像的,邊緣提取常用Canny進行提取邊緣 輪廓發現也是基于拓撲結構,掃描連通圖,最后…

關于 WebRequest.RegisterPrefix

RegisterPrefix 方法將 WebRequest 子代注冊到服務請求。 WebRequest 后代通常被注冊來處理特定的協議(例如 HTTP 或 FTP),但也可能被注冊來處理對特定服務器或服務器上的路徑的請求。 已注冊的預注冊保留類型包括下列類型: htt…