日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

第2章 Python 数字图像处理(DIP) --数字图像基础4 -- 像素间的一些基本关系 - 邻域 - 距离测试

發布時間:2023/12/10 python 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第2章 Python 数字图像处理(DIP) --数字图像基础4 -- 像素间的一些基本关系 - 邻域 - 距离测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 像素間的一些基本關系
      • 像素的相信像素
      • 距離測試

import sys import numpy as np import cv2 import matplotlib import matplotlib.pyplot as plt import PIL from PIL import Imageprint(f"Python version: {sys.version}") print(f"Numpy version: {np.__version__}") print(f"Opencv version: {cv2.__version__}") print(f"Matplotlib version: {matplotlib.__version__}") print(f"Pillow version: {PIL.__version__}") Python version: 3.6.12 |Anaconda, Inc.| (default, Sep 9 2020, 00:29:25) [MSC v.1916 64 bit (AMD64)] Numpy version: 1.16.6 Opencv version: 3.4.1 Matplotlib version: 3.3.2 Pillow version: 8.0.1

像素間的一些基本關系

像素的相信像素

  • N4(p)N_4(p)N4?(p)
  • 坐標(x,y)(x, y)(x,y)處的像素ppp有2個水平的相信像素和2個垂直的相鄰像素,它們的坐標是(x+1,y),(x?1,y),(x,y+1),(x,y?1)(x+1, y),(x-1, y),(x, y+1),(x, y-1)(x+1,y),(x?1,y),(x,y+1),(x,y?1)這組像素稱為ppp的4鄰域,用N4(p)N_4(p)N4?(p)表示
  • ND(p)N_D(p)ND?(p)
  • ppp的4個對角相鄰像素的坐標是(x+1,y+1),(x+1,y?1),(x?1,y+1),(x?1,y?1)(x+1, y+1),(x+1,y-1),(x-1,y+1),(x-1, y-1)(x+1,y+1),(x+1,y?1),(x?1,y+1),(x?1,y?1)ND(p)N_D(p)ND?(p)表示。
  • N8(p)N_8(p)N8?(p)
  • 這些相鄰像素和4鄰域全稱為8鄰域

如題一個鄰域包含ppp,那么稱該鄰域為閉鄰域,否則稱該鄰域為開鄰域。

def n4p(x_0):x = np.zeros(5)y_4 = np.zeros_like(x)x[0] = x_0y_4[0] = x_0x[1] = x[0] + 1y_4[1] = y_4[0]x[2] = x[0] - 1y_4[2] = y_4[0]x[3] = x[0]y_4[3] = y_4[0] + 1x[4] = x[0]y_4[4] = y_4[0] - 1return x, y_4def ndp(x_0):x = np.zeros(5)y_D = np.zeros_like(x)x[0] = x_0y_D[0] = x_0x[1] = x[0] + 1y_D[1] = y_D[0] + 1x[2] = x[0] + 1y_D[2] = y_D[0] - 1x[3] = x[0] - 1y_D[3] = y_D[0] + 1x[4] = x[0] - 1y_D[4] = y_D[0] - 1return x, y_D x_4, y_4 = n4p(0) x_d, y_d = ndp(0) x_8 = np.concatenate((x_4, x_d)) y_8 = np.concatenate((y_4, y_d))plt.figure(figsize=(15, 5)) plt.subplot(1,3,1), plt.scatter(x_4, y_4), plt.title("N_4"),# plt.xticks([]), plt.yticks([]) plt.subplot(1,3,2), plt.scatter(x_d, y_d), plt.title("N_D"),# plt.xticks([]), plt.yticks([]) plt.subplot(1,3,3), plt.scatter(x_8, y_8), plt.title("N_8"),# plt.xticks([]), plt.yticks([]) plt.tight_layout() plt.show()

# 圖像的鄰域 height, width = 3, 3 img_ori = np.zeros([height, width], dtype=np.float)img_4 = img_ori.copy() img_4[0, 1] = 1.0 img_4[1, 0] = 1.0 img_4[1, 1] = 1.0 img_4[1, 2] = 1.0 img_4[2, 1] = 1.0img_d = img_ori.copy() img_d[0, 0] = 1.0 img_d[0, 2] = 1.0 img_d[1, 1] = 1.0 img_d[2, 0] = 1.0 img_d[2, 2] = 1.0img_8 = (img_d + img_4) img_8[1, 1] = 0.5plt.figure(figsize=(15, 5)) plt.subplot(1,3,1), plt.imshow(img_4, 'gray'), plt.title("N_4"),# plt.xticks([]), plt.yticks([]) plt.subplot(1,3,2), plt.imshow(img_d, 'gray'), plt.title("N_D"),# plt.xticks([]), plt.yticks([]) plt.subplot(1,3,3), plt.imshow(img_8, 'gray'), plt.title("N_8"),# plt.xticks([]), plt.yticks([]) plt.tight_layout() plt.show()

距離測試

對于坐標分別為(x,y),(u,v)和(w,z)的像素p,q和s(x, y),(u,v)和(w, z)的像素p, q和s(x,y),(u,v)(w,z)p,qs,如果
(a)D(p,q)≥0[D(p,q)=0,當且僅當p=q](a)\; D(p, q) \ge 0 \; [D(p,q) = 0, 當且僅當p=q](a)D(p,q)0[D(p,q)=0,p=q]
(b)D(p,q)==D(q,p)且(b)\; D(p, q) == D(q, p) 且(b)D(p,q)==D(q,p)
(c)D(p,s)≤D(p,q)+D(q,s)(c)\; D(p, s) \leq D(p, q) + D(q, s)(c)D(p,s)D(p,q)+D(q,s)
則D是一個距離函數或距離測度。p和qp 和 qpq之間的區幾里得(歐氏)距離定義為:
De(p,q)=[(x?u)2+(y?v)2]12(2.19)D_{e}(p, q) = \Big[(x - u)^2 + (y -v)^2 \Big]^{\frac{1}{2}} \tag{2.19}De?(p,q)=[(x?u)2+(y?v)2]21?(2.19)

對于這個距離測度,到點(x, y)的距離小于等于r的像素,是中心在(x, y)、半徑為r的圓盤。

p和q之間的距離D4p和q之間的距離D_4pqD4?(稱為街區距離-曼哈頓距離)
D4(p,q)=∣x?u∣+∣y?v∣(2.20)D_4(p, q) = |x - u| + |y - v| \tag{2.20}D4?(p,q)=x?u+y?v(2.20)

p和q之間的距離D8p和q之間的距離D_8pqD8?(稱為棋盤距離)
D4(p,q)=max(∣x?u∣,∣y?v∣)(2.21)D_4(p, q) = max(|x - u|, |y - v|) \tag{2.21}D4?(p,q)=max(x?u,y?v)(2.21)

總結

以上是生活随笔為你收集整理的第2章 Python 数字图像处理(DIP) --数字图像基础4 -- 像素间的一些基本关系 - 邻域 - 距离测试的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。