第2章 Python 数字图像处理(DIP) --数字图像基础4 -- 像素间的一些基本关系 - 邻域 - 距离测试
目錄
- 像素間的一些基本關(guān)系
- 像素的相信像素
- 距離測試
像素間的一些基本關(guān)系
像素的相信像素
- 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,q和s,如果
(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是一個距離函數(shù)或距離測度。p和qp 和 qp和q之間的區(qū)幾里得(歐氏)距離定義為:
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_4p和q之間的距離D4?(稱為街區(qū)距離-曼哈頓距離)
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_8p和q之間的距離D8?(稱為棋盤距離)
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)
總結(jié)
以上是生活随笔為你收集整理的第2章 Python 数字图像处理(DIP) --数字图像基础4 -- 像素间的一些基本关系 - 邻域 - 距离测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux apache中文名称图片,A
- 下一篇: 坦克大战(Python)附思维导图、代码