0

セグメンテーションの目的で 2D 医療画像に取り組んでおり、ファジー c-means を実装しています。「ValueError: シーケンスが大きすぎます。32 を超えることはできません」というエラーが表示されます。ファジー c-means を使用して画像全体のセグメンテーションを表示する必要があります。コードは次のとおりです。pic 変数のサイズは 512x512x3 です。

from skimage.color import rgb2gray
import numpy as np
from math import log10, sqrt
import cv2
import matplotlib.pyplot as plt
from PIL import Image
import skfuzzy as fuzz


pic = cv2.imread('E:/volumes/Images/corona_4.png')
pic = cv2.cvtColor(pic, cv2.COLOR_BGR2RGB)
cv2.imshow("CT Scan", pic)
cv2.waitKey(0)
cv2.destroyAllWindows()

pic_n = pic.reshape(pic.shape[0]*pic.shape[1], pic.shape[2])
pic_n.shape

def change_color_fuzzycmeans(cluster_membership, clusters):
    img = []
    for pix in cluster_membership.T:
        img.append(clusters[np.argmax(pix)])
    return img

cntr, u, u0, d, jm, p, fpc =fuzz.cluster.cmeans(pic_n,2,2,0.005,100)

new_img = change_color_fuzzycmeans(u,cntr)
fuzzy_img = np.reshape(new_img,pic_n).astype(np.uint8)

エラー:

Traceback (most recent call last):

  File "<ipython-input-16-e78a9da752f4>", line 2, in <module>
    fuzzy_img = np.reshape(new_img,pic_n).astype(np.uint8)

  File "C:\Users\User\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py", line 292, in reshape
    return _wrapfunc(a, 'reshape', newshape, order=order)

  File "C:\Users\User\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py", line 66, in _wrapfunc
    return _wrapit(obj, method, *args, **kwds)

  File "C:\Users\User\Anaconda3\lib\site-packages\numpy\core\fromnumeric.py", line 46, in _wrapit
    result = getattr(asarray(obj), method)(*args, **kwds)

ValueError: sequence too large; cannot be greater than 32"
4

1 に答える 1