第3章 Python 數字圖像處理(DIP) - 灰度變換與空間濾波15 - 銳化高通濾波器 -拉普拉斯核(二階導數)

目錄

  • 銳化(高通)空間濾波器
      • 基礎 - 一階導數和二階導數的銳化濾波器
      • 二階導數銳化圖像--拉普拉斯

銳化(高通)空間濾波器

  • 平滑通過稱為低通濾波
  • 類似于積分運算
  • 銳化通常稱為高通濾波
  • 微分運算
  • 高過(負責細節的)高頻,衰減或抑制低頻

基礎 - 一階導數和二階導數的銳化濾波器

數字函數的導數是用差分來定義的。定義這些差分的方法有多種

一階導數的任何定義都要滿足如下要求:

  1. 恒定灰度區域的一階導數必須為0
  2. 灰度臺階或斜坡開始處的一階導數必須非零。
  3. 灰度斜坡上的一階導數必須非零。

二階導數的任何定義都要滿足如下要求:

  1. 恒定灰度區域的二階導數必須為零。
  2. 灰度臺階或斜坡的開始處和結束處的地階導數必須非零。
  3. 灰度斜坡上的二階導數必須為零。

一維函數f(x)f(x)f(x)的一階導數的一個基本定義是差分:
?f?x=f(x+1)?f(x)(3.48)\frac{\partial f}{\partial x} = f(x+1) -f(x) \tag{3.48}?x?f?=f(x+1)?f(x)(3.48)

二階導數定義為差分:
?2f?x2=f(x+1)+f(x?1)?2f(x)(3.49)\frac{\partial^2 f}{\partial x^2} = f(x+1) + f(x-1) - 2f(x) \tag{3.49}?x2?2f?=f(x+1)+f(x?1)?2f(x)(3.49)

def first_derivative(y):y_1 = np.zeros(len(y)-1)for i in range(1, len(y)):if i + 1 < len(y):y_1[i] = y[i+1] - y[i]return y_1def second_derivative(y):y_2 = np.zeros(len(y)-1)for i in range(1, len(y)):if i + 1 < len(y):y_2[i] = y[i+1] + y[i-1] - 2*y[i]return y_2
#一維數字一階與二階導數
y = np.arange(1, 7)
y = y[::-1]
y = np.pad(y, (3, 5), mode='constant', constant_values=(6, 1))
y = np.pad(y, (0, 5), mode='constant', constant_values=(0, 6))
x = np.arange(len(y))fig = plt.figure(figsize=(16, 4))
ax_1 = fig.add_subplot(1, 2, 1)
ax_1.plot(x, y, '-.s', label="data")
ax_1.legend(loc='best', fontsize=12)y_1 = first_derivative(y)
y_2 = second_derivative(y)ax_2 = fig.add_subplot(1, 2, 2)
ax_2.plot(y_1[1:], ':o', label='First derivative')
ax_2.plot(y_2[1:], '--s', alpha=0.5, label='Second derivative')
ax_2.plot(np.zeros(19), '--k', alpha=0.5)
ax_2.legend(loc='best', fontsize=12)
plt.tight_layout()
plt.show()

在這里插入圖片描述

二階導數銳化圖像–拉普拉斯

我們感興趣的是各向同性核,這種核的響應與圖像中灰度不連續的方向無關。最簡單的各向同性導數算子(核)是拉普拉斯, 它定義為:
?2f=?2f?x2+?2f?y2(3.50)\nabla^2 f = \frac{\partial^2 f}{\partial x^2} + \frac{\partial^2 f}{\partial y^2} \tag{3.50}?2f=?x2?2f?+?y2?2f?(3.50)

我們把這個片子以離散形式表達:
?2f?x2=f(x+1,y)+f(x?1,y)?2f(x,y)(3.51)\frac{\partial^2 f}{\partial x^2} = f(x+1, y) + f(x-1, y) -2f(x, y) \tag{3.51}?x2?2f?=f(x+1,y)+f(x?1,y)?2f(x,y)(3.51)
?2f?y2=f(x,y+1)+f(x,y?1)?2f(x,y)(3.52)\frac{\partial^2 f}{\partial y^2} = f(x, y+1) + f(x, y-1) -2f(x, y) \tag{3.52}?y2?2f?=f(x,y+1)+f(x,y?1)?2f(x,y)(3.52)

兩個變量的離散拉普拉斯是
?2f(x,y)=f(x+1,y)+f(x?1,y)+f(x,y+1)+f(x,y?1)?4f(x,y)(3.53)\nabla^2 f(x, y)= f(x+1, y) + f(x-1, y) + f(x, y+1) + f(x, y-1)-4f(x, y) \tag{3.53}?2f(x,y)=f(x+1,y)+f(x?1,y)+f(x,y+1)+f(x,y?1)?4f(x,y)(3.53)

寫成矩陣的形式就得到拉普拉斯核:
[01(f(x,y?1)的權值)01(f(x?1,y)的權值)?4(f(x,y)的權值)1(f(x+1,y)的權值)01(f(x,y+1)的權值)0]\begin{bmatrix} 0 & 1 (f(x,y-1)的權值) & 0 \\ 1 (f(x-1,y)的權值) & -4 (f(x,y)的權值) & 1 (f(x+1,y)的權值) \\ 0 & 1 (f(x,y+1)的權值) & 0\end{bmatrix}???01(f(x?1,y))0?1(f(x,y?1))?4(f(x,y))1(f(x,y+1))?01(f(x+1,y))0????

圖像的銳化的濾波原理也類似于描述的低通濾波,只不過使用不同的系數
后面兩個是含對角項的擴展公式的核:

[0101?41010][1111?81111]\begin{bmatrix} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0\end{bmatrix} \begin{bmatrix} 1 & 1 & 1 \\ 1 & -8 & 1 \\ 1 & 1 & 1\end{bmatrix}???010?1?41?010???????111?1?81?111????

這兩個是二階導數定義得到的:

[0?10?14?10?10][?1?1?1?18?1?1?1?1]\begin{bmatrix} 0 & -1 & 0 \\ -1 & 4 & -1 \\ 0 & -1 & 0\end{bmatrix} \begin{bmatrix} -1 & -1 & -1 \\ -1 & 8 & -1 \\ -1 & -1 & -1\end{bmatrix}???0?10??14?1?0?10????????1?1?1??18?1??1?1?1????

拉普拉斯是導數算子,因此會突出圖像中的急劇灰度過渡,并且不會強調緩慢變化的灰度區域。這往往會產生具有灰色邊緣線和其他不連續性的圖像,它們都疊加在暗色無特征背景上。將拉普拉斯圖像與原圖相加,就可以“恢復”背景特征,同時保留拉普拉斯的銳化效果。 上面兩個核得到的圖像需要用原圖減去得到的圖,下面兩個核得到的圖像需要用原圖加下得到的圖,以實現銳化。

g(x,y)=f(x,y)+c[?2f(x,y)](3.54)g(x,y) = f(x,y) + c[\nabla^2 f(x,y)] \tag{3.54}g(x,y)=f(x,y)+c[?2f(x,y)](3.54)
使用上面的前兩個核,則c=?1c = -1c=?1,后面的兩個二階導數定義的核則c=1c = 1c=1
兩組核剛好相差一個負號

觀察平滑與銳化核可發現,平滑核的系數之和為1,銳化核的系數之和為0。用銳化核處理圖像時,有會出現負值,需要進行額外處理才能得到合適的視覺結果。

# Laplacian filter 不同的核,拉普拉斯銳化
img = cv2.imread('DIP_Figures/DIP3E_Original_Images_CH03/Fig0338(a)(blurry_moon).tif', 0)
img = normalize(img)kernel_laplacian_a = np.array([[0,1,0],[1,-4,1],[0,1,0]])
# 下面這個核雖然可以銳化,但是效果沒有上面這個好
# kernel_laplacian_d = np.array([[
#                     [-1, -1, -1],
#                     [-1, 8, -1],
#                     [-1, -1, -1]
#                                 ]])
laplacian_img_a = filter_2d(img, kernel_laplacian_a, mode='constant')
laplacian_img_b = filter_2d(img, -kernel_laplacian_a, mode='constant')plt.figure(figsize=(14, 16))
plt.subplot(2, 2, 1), plt.imshow(img, cmap='gray', vmin=0, vmax=1), plt.title('Original')
plt.subplot(2, 2, 2), plt.imshow(laplacian_img_a, cmap='gray', vmax=1), plt.title('Laplacian')laplacian_img_ori = normalize(img - laplacian_img_a)
plt.subplot(2, 2, 3), plt.imshow(laplacian_img_ori, cmap='gray', vmax=1), plt.title('Laplacian With ORI')laplacian_imgori = normalize(img + laplacian_img_b)
plt.subplot(2, 2, 4), plt.imshow(laplacian_imgori, cmap='gray', vmax=1), plt.title('Laplacian With ORI')plt.tight_layout()
plt.show()

在這里插入圖片描述

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

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

相關文章

Debian on VirtualBox下共享win7文件夾設置

借用&#xff1a;http://www.dbasoul.com/2010/695.html 1. 安裝增強功能包(Guest Additions) 參考文檔&#xff1a;Debian下安裝VirtualBox增強功能2. 設置共享文件夾 重啟完成后點擊”設備(Devices)” -> 共享文件夾(Shared Folders)菜單&#xff0c;添加一個共享文件夾&a…

第四周作業

1、復制/etc/skel目錄為/home/tuser1&#xff0c;要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。cp -r /etc/skel/ /home/tuser1/chmod -R go--- /home/tuser1/2、編輯/etc/group文件&#xff0c;添加組hadoop。vim /etc/group G, o, hadoop:x:501, esc, …

C# 導出 Excel 數字列出現‘0’的解決辦法

在DataGird的中某一列全是數字并且長度大于15的字符&#xff0c;在導出excel時數字列第15-18位全部為0。解決辦法&#xff1a;在需導出數字列前加入英文字符狀態的單引號&#xff08;‘ &#xff09;&#xff0c;如&#xff1a;<asp:TemplateField HeaderText"身份證號…

在python是什么意思_python 的 表示什么

python代碼里經常會需要用到各種各樣的運算符&#xff0c;這里我將要和大家介紹的是Python中的&&#xff0c;想知道他是什么意思嗎&#xff1f;那就和小編一起來了解一下吧。&是位運算符-與&#xff0c;類似的還有|&#xff08;或&#xff09;&#xff0c;!(非)。 整數…

Ubuntu 更改ROOT密碼的方法

真蛋疼啊&#xff0c;剛安裝了Ubuntu 需要安裝程序&#xff0c;提示輸入root密碼&#xff0c;我才想起來Ubuntu的root密碼是什么&#xff0c;我貌似沒設置啊。 上網搜索了下相關信息&#xff0c;才知道原來root默認是沒有密碼的。 需要使用以下命令 sudo passwd root 然后會要求…

DevExpress控件GridControl中的布局詳解 【轉】

DevExpress控件GridControl中的布局詳解 【轉】 2012-10-24 13:27:28| 分類&#xff1a; devexpress | 標簽&#xff1a;devexpress |舉報|字號 訂閱 http://www.cnblogs.com/martintuan/archive/2011/03/05/1971472.html 進行DevExpress控件GridControl的使用時&#xff…

第3章 Python 數字圖像處理(DIP) - 灰度變換與空間濾波16 - 銳化高通濾波器 - 鈍化掩蔽和高提升濾波

目錄銳化&#xff08;高通&#xff09;空間濾波器鈍化掩蔽和高提升濾波銳化&#xff08;高通&#xff09;空間濾波器 平滑通過稱為低通濾波類似于積分運算銳化通常稱為高通濾波微分運算高過&#xff08;負責細節的&#xff09;高頻&#xff0c;衰減或抑制低頻 鈍化掩蔽和高提…

python畫圓并填充圖形顏色_如何使用python設計語言graphics繪制圓形圖形

在python設計語言中&#xff0c;可以利用第三方包graphics繪制不同的圖形&#xff0c;有圓形、直線、矩形等。如果想要繪制一個圓形&#xff0c;可以設置圓形的半徑和坐標位置。下面利用一個實例說明繪制圓形&#xff0c;操作如下&#xff1a;工具/原料 python 截圖工具 方法/步…

設計模式學習-工廠方法模式

在上文(設計模式學習-簡單工廠模式)的模擬場景中&#xff0c;我們用簡單工廠模式實現了VISA和MASTERARD卡的刷卡處理&#xff0c;系統成功上線并運行良好&#xff0c;突然有一天老大跑來說&#xff0c;我們的系統需要升級&#xff0c;提供對一般銀聯卡的支持。怎么辦&#xff1…

3ds Max Shortcuts 快捷鍵大全

主界面 【Q】選擇循環改變方式 【W】移動 【E】旋轉 【R】縮放循環改變方式 【7】物體面數 【8】Environment 【9】Advanced lighting 【0】Render to Textures 【1】【2】【3】【4】【5】分別對應5個次物體級別&#xff0c;例如Edit Mesh中的點、線、面、多邊形、 【F2】切換在…

word2010激活工具使用方法

1、關閉殺毒&#xff0c;關閉正打開著的word文檔 2、執行Activator_v1.2.exe-->Activation Office 2010VL --》按1 --》完畢。 3、打開word--》文件--》幫助--》看右上角。 2、【補充】使用 Office 2010 Toolkit 下載地址&#xff1a; http://vdisk.weibo.com/s/yoz9R 或…

python編程單詞排序_Python實現對文件進行單詞劃分并去重排序操作示例

本文實例講述了Python實現對文件進行單詞劃分并去重排序操作。分享給大家供大家參考&#xff0c;具體如下&#xff1a; 文件名&#xff1a;test1.txt 文件內容&#xff1a; But soft what light through yonder window breaks It is the east and Juliet is the sun Arise fair…

第3章 Python 數字圖像處理(DIP) - 灰度變換與空間濾波17 - 銳化高通濾波器 - 梯度圖像(羅伯特,Sobel算子)

目錄銳化&#xff08;高通&#xff09;空間濾波器使用一階導數銳化圖像&#xff0d;梯度銳化&#xff08;高通&#xff09;空間濾波器 平滑通過稱為低通濾波類似于積分運算銳化通常稱為高通濾波微分運算高過&#xff08;負責細節的&#xff09;高頻&#xff0c;衰減或抑制低頻…

如何學習Linux / 新手入門

如何學習Linux / 新手入門 一、從基礎開始&#xff1a;常常有些朋友在Linux論壇問一些問題&#xff0c;不過&#xff0c;其中大多數的問題都是很基礎的。例如&#xff1a;為什么我使用一個命令的時候&#xff0c;系統告訴我找不到該目錄&#xff0c;我要如何限制使用者的權限等…

opacity用法:

/* older safari/Chrome browsers */ -webkit-opacity: 0.5; /* Netscape and Older than Firefox 0.9 */ -moz-opacity: 0.5; /* Safari 1.x (pre WebKit!) 老式khtml內核的Safari瀏覽器*/ -khtml-opacity: 0.5; /* IE9 etc...modern browsers */ opacity: .5; /* IE…

網絡傳輸層之TCP、UDP詳解

1、傳輸層存在的必要性 由于網絡層的分組傳輸是不可靠的&#xff0c;無法了解數據到達終點的時間&#xff0c;無法了解數據未達終點的狀態。因此有必要增強網絡層提供服務的服務質量。 2、引入傳輸層的原因 面向連接的傳輸服務與面向連接的網絡服務類似&#xff0c;都分為建立連…

關機與禁止關機代碼

今天抽空,寫完了定時關機程序的代碼,測試了一下,還不錯,以前寫過個禁止關機的程序,用來測試一下,看哪個強,先運行禁止關機的程序,用Windows xp的關閉計算機試了一下,關不了. 代碼很少: private procedure QueryEndSession(var Msg:TMessage);Message WM_QueryEndSession;…

pythonweb開發面試_Python web 面試題(一)

1、列舉django的內置組件&#xff1f; url 、view、model、template、中間件 2、列舉django中間件的5個方法&#xff1f;以及django中間件的應用場景&#xff1f; process_request(self,request) process_view(self, request, callback, callback_args, callback_kwargs) proce…

第3章 Python 數字圖像處理(DIP) - 灰度變換與空間濾波18 - 低通、高通、帶阻和帶通濾波器、組合使用空間增強方法

低通、高通、帶阻和帶通濾波器 得到空間濾波器的第三種方法&#xff0c;生成一維濾波器函數&#xff0c;然后要么使用式(3.42)wvvTw vv^TwvvT生成二維可分離的濾波器函數&#xff0c;要么旋轉這些一維函數來生成二維核。旋轉后的一維函數是圓對稱&#xff08;各向同性&#x…