沒找到python實現,照著定義原理實現下了
def get_8count
(list_zhou9)
:"""
把通閾:param list_zhou9:
:return
:"""
list_zhou9 =[1
- one for one in list_zhou9]
count = list_zhou9[6]
- list_zhou9[6]
* list_zhou9[7]
* list_zhou9[0]
count += list_zhou9[0]
- list_zhou9[0]
* list_zhou9[1]
* list_zhou9[2]
count += list_zhou9[2]
- list_zhou9[2]
* list_zhou9[3]
* list_zhou9[4]
count += list_zhou9[4]
- list_zhou9[4]
* list_zhou9[5]
* list_zhou9[6]
return count
def sum_static
(b_list)
: sum_ =
0for i, one in
enumerate
(b_list)
:if one !=-1
: sum_ +=
1else
: copy = one
b_list[i]=0
ifget_8count
(b_list)==1
: sum_ +=
1 b_list[i]
= copy
return sum_
def neighbours
(h, w, image)
:"""
八通域的三種分類,目標,背景,選中(為了每輪計算)三種
:param h:
:param w:
:param image:
:return
:"""
h_1, w_1, h1, w1 = h -
1, w -
1, h +
1, w +
1 postiton_xy =
[[h, w1]
,[h_1, w1]
,[h_1, w]
,[h_1, w_1]
,[h, w_1]
,[h1, w_1]
,[h1, w]
,[h1, w1]
] b_list =[-
1if image[x, y]
==128
else
1if image[x, y]
==255
else
0for x, y in
postiton_xy]
return b_list
def hiliditch
(img_src)
:"""
hiliditch,細化方法
:param img_src: 輸入為操作的二值圖,0為背景,255為目標畫素
:return
: 硒化後的二至
"""rows, columns = img_src.shape[:2
] image_thinned = img_src.
copy()
is_continue = true
while is_continue:
is_continue = false
for h in
range(1
, rows -1)
:for w in
range(1
, columns -1)
:[x1, x2, x3, x4, x5, x6, x7, x8]
=neighbours
(h, w, image_thinned)
b_list =
[x1, x2, x3, x4, x5, x6, x7, x8]
func_1 = image_thinned[h, w]
==255 # 即當前畫素必須為前景點
func_2 =1-
abs(x1)+1
-abs
(x3)+1
-abs
(x5)+1
-abs
(x7)
>=
1 # 當前畫素為邊界點,即東西南北四個點至少有乙個b[i]=0
func_3 =
sum(
[abs
(one)
for one in b_list]
)>=
2 # 條件表示不能刪除端點
func_4 =
sum([1
if one ==
1else
0for one in b_list]
)>
1 # 條件表示不能刪除端點
func_5 =
get_8count
(b_list)
==1 # 連通性
func_6 =
sum_static
(b_list)
==8 #
if func_1 and func_2 and func_3 and func_4 and func_5 and func_6:
image_thinned[h, w]
=128
is_continue = true
for h in
range(1
, rows -1)
:for w in
range(1
, columns -1)
:if image_thinned[h, w]
==128
: image_thinned[h, w]=0
return image_thinned
q64 Hilditch細化演算法(C )
因為在opencv100wen後續沒有看到c 解答,這題按原本的思路自己寫了,但影象細化的有問題變得像梳子一樣,參考了一些發現判斷條件都有所區別。大致思路如下 分了3段 從左上角開始光柵掃瞄 如果 x,y 0不處理,為1,滿足下面五個條件時設 1 a.4 近鄰畫素的取值有乙個以上為0 b.8 連線數...
itemcf的hadoop實現優化 Python
原始資料如下 u1 a,d,b,c u2 a,a,c u3 b,d u4 a,d,c u5 a,b,c 計算公式使用 sim u i u j u i u j 其中 u i u j u i u j u i u j 原始的hadoop實現需要5輪mr,優化後只需要兩輪就可以完成。之前的輪數過多,主要在於...
機器學習PAI實現精細化營銷
阿里雲大學課程 機器學習pai實現精細化營銷 課程介紹 精細化營銷是企業常用的的一類資料服務,本課程幫助學員了解企業進行精細化營銷過程中的資料處理,掌握客戶分群的基本應用方法,教會學員如何進行資料整體分析 模型構建以及後期的模型評估和生成評估報告,清楚大資料在企業營銷中的作用。本課程通過乙個簡單案例...