Python-скрипт для MTFPython

Программы на Python
Ответить
Anonymous
 Python-скрипт для MTF

Сообщение Anonymous »

Я хочу реализовать сценарий MTF (функция передачи модуляции) на Python. В этот скрипт я хочу передать изображение в качестве аргумента и получить в результате значение MTF.
Это значение MTF будет использоваться для количественной оценки резкости изображения в проекте.
вот некоторые ссылки, которые я использовал в качестве ссылки при разработке сценария -
[в настоящее время я использую эту ссылку для разработки scrip]https://github.com/weiliu4/py_mtf/blob/master/mtf.py
https://github.com/habi/GlobalDiagnosti ... ter/MTF.py
Определение MTF: MTF определяется как БПФ функции расширения линии.
Функция расширения линии определяется как производная от расширения края. функция. Функция разброса кромок – это значения вдоль кромки, в идеале — тестовая мишень с острой кромкой.

Код: Выделить всё

def ESF(path):
img=cv2.imread(path)
img=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#m_out=0.299*img[:,:,0]+0.589*img[:,:,1]+0.114*img[:,:,2]
#x=m_out[100,:]
x=img
mu=np.sum(x)/(x.shape[0])
tmp=(x[:]-mu)**2
sigma=np.sqrt(np.sum(tmp)/(x.shape[0]))
edge_function=(x[:]-mu)/sigma
#print(edge_function)
edge_function=edge_function[::3]
#lsf=edge_function[:-2]-edge_function[2:]
lsf=np.abs(np.diff(edge_function))
mtf=abs(np.fft.fft(lsf))
print(mtf)
#print(np.max(mtf))
mtf=mtf[:]/np.max(mtf)
mtf=mtf[:len(mtf)//2]
mtf=np.arange(mtf.shape[0]*mtf.shape[1]).reshape(mtf.shape[0],mtf.shape[1])
ix=np.arange(mtf.shape[0])/(mtf.shape[0])
mtf_poly=np.polyfit(ix, mtf,6)
#print(mtf_poly)
#mtf_poly=np.squeeze(mtf_poly)
#print(mtf.shape[0])
#print(mtf.shape[1])
#poly=np.poly1d(mtf_poly)
#print(poly)
plt.figure()
plt.title("MTF")
plt.xlabel(r'Frecuency $[cycles/pixel]$') ; plt.ylabel('mtf')
p= plt.plot(mtf,'-or')
#ll = plt.plot(poly(ix))
#plt.legend([p,ll],["MTF values","polynomial fit"])
plt.grid()
#plt.show()
В настоящее время я получаю сообщение об ошибке при оценке строки

Код: Выделить всё

poly=np.poly1d(mtf_poly)
Любая помощь в том, что я делаю неправильно. Также может кто-нибудь сообщить мне, в правильном ли направлении я иду, чтобы найти MTF.
TIA

Подробнее здесь: https://stackoverflow.com/questions/611 ... pt-for-mtf
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»