医用画像(ピクセル値が0~1020)を扱っています。
wlで指定した値を中心にwwの範囲を256階調に割る振り表示するためにルックアップテーブルの作成をしようとしていますが
TypeError: 'function' object is not subscriptable
のエラーが出てしまい困っています。
どなたか、ご教授いただけないでしょうか。
よろしくお願いいたします。
コードは以下となります。
# -*- coding: utf-8 -*- import pydicom import numpy as np import cv2 import fileselect as fs def lookup_table(val): wl = cv2.getTrackbarPos('WL', 'dcm_image') ww = cv2.getTrackbarPos('WW', 'dcm_image') half_ww = ww/2 lookup_tbl = np.zeros((max_arr, 1), dtype='uint16') ww_low = wl - half_ww ww_high = wl + half_ww for i in range(len(lookup_tbl)): if i - ww_low <= 0: lookup_tbl[i][0] = 0 #wlからww/2以下は値0として表示 elif i >= ww_high : lookup_tbl[i][0] = 255 #wlからww/2以上は値255として表示 elif i > ww_low and i < ww_high: lookup_table[i][0] = int((i - ww_low) * (256 / (ww_high - ww_low))) #上記部分の処理で表題のエラーが出て困っています。 # iとww_lowの値が同じになった時にエラーが出てしまい処理が止まってしまいます。 filenames = fs.many_files() dcm = pydicom.dcmread(filenames[0]) max_arr = dcm.pixel_array.max() min_arr = dcm.pixel_array.min() cv2.namedWindow('dcm_image') cv2.createTrackbar("WL", "dcm_image", int((max_arr-min_arr)/2), max_arr, lookup_table) cv2.createTrackbar("WW", "dcm_image", int((max_arr-min_arr)/2), max_arr, lookup_table) cv2.imshow('dcm_image',dcm.pixel_array) cv2.waitKey()
環境 python3.6.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/18 21:36