Я пытаюсь реализовать алгоритм нечеткой связности на серии изображений, но он не работает со мной. Это фактические выходные изображения: ![enter image description here](https://i.stack.imgur.com/Wvz2C.png)
но я ожидаю, что сегментированный объект будет выглядеть примерно так:
![enter image description here](https://i.stack.imgur.com/W0tIt.png)
Вот моя реализация:
for i in range(h):
for j in range(w):
if(memberShip.triangular2(seedPointOriginalValue,floatImg[i][j])>0):
X.put(i)
Y.put(j)
L.put(floatImg[i][j])
print("mjjjjjj",L.qsize())
while L.qsize() != 0 :
c = L.get()
x = X.get()
y = Y.get()
memberShips = [0.0 for i in range(h*w)]
n = 0
for i in range(h):
for j in range(w):
d = floatImg[i][j]
memberShips[n] = min(memberShip.triangular1(d, seedPointOriginalValue), memberShip.triangular(c, d))
n += 1
maxOfMin = max(memberShips)
matrix[x][y] = maxOfMin
if(maxOfMin > memberShip.triangular1(c, seedPointOriginalValue)):
qSize = L.qsize()
for _ in range(qSize):
# print(triangular(c,e))
e = L.get()
if(memberShip.triangular(c,e)>0) :
X.put(X.get())
Y.put(Y.get())
L.put(e)
Функции MemberShip:
def triangular1(x, seed):
min = seed - 12
max = seed + 12
m = seed
#print(x)
if(x <= min) :
return 0
if x >= max :
return 0
if min < x and x <= m :
return (x - min) / (m - min)
if m < x and x < max :
return (max - x) / (max - m)
def triangular(x, y):
min = y - 12
max = y + 12
m = y
#print(x , y)
if(x <= min) :
return 0
if x >= max :
return 0
if min < x and x <= m :
return (x - min) / (m - min)
if m < x and x < max :
return (max - x) / (max - m)
def triangular2(o, c):
min = o - 12
max = o + 12
m = o
#print(x , y)
if(c <= min) :
return 0
if c >= max :
return 0
if min < c and c <= m :
return (c - min) / (m - min)
if m < c and c < max :
return (max - c) / (max - m)
Я думаю, что проблема в функциях членства, но я не могу понять, где проблема. Любая помощь приветствуется.
Заранее спасибо С наилучшими пожеланиями