In [ ]:
%matplotlib inline
In [ ]:
import numpy as np
import pylab as plt
import cv2
In [ ]:
data_root = '/diskmnt/a/makov/yaivan/2016-02-11_Pin/'
Список файлов:
In [ ]:
empty = plt.imread(data_root+'first_projection.tif').astype('float32')
corr = plt.imread(data_root+'first_projection_corr.tif').astype('float32')
tomo = plt.imread(data_root+'Raw/pin_2.24um_0000.tif').astype('float32')
white = np.fromfile(data_root+'white0202_2016-02-11.ffr',dtype='<u2').astype('float32').reshape((2096, 4000))
black_1 = np.fromfile(data_root+'black0101_2016-02-09.ffr',dtype='<u2').astype('float32').reshape((2096, 4000))
black_2 = np.fromfile(data_root+'black0201_2016-02-16.ffr',dtype='<u2').astype('float32').reshape((2096, 4000))
In [ ]:
def show_frame(data, label):
data_filtered = cv2.medianBlur(data,5)
plt.figure(figsize=(12,10))
plt.imshow(data_filtered)
plt.title(label+' filtered')
plt.colorbar(orientation='horizontal')
plt.show()
plt.figure(figsize=(12,8))
plt.plot(data[1000])
plt.grid(True)
plt.title(label+' filtered: central cut')
plt.show()
plt.figure(figsize=(12,10))
plt.imshow(data_filtered)
plt.colorbar(orientation='horizontal')
plt.title(label)
plt.show()
plt.figure(figsize=(12,8))
plt.plot(data_filtered[1000])
plt.grid(True)
plt.title(label+': central cut')
plt.show()
In [ ]:
show_frame(white, 'White')
In [ ]:
show_frame(black_1, 'Black_1')
In [ ]:
show_frame(black_2, 'Black_2')
In [ ]:
show_frame(black_1 - black_2, 'Black_1 - Black_2')
In [ ]:
show_frame(empty, 'Empty')
In [ ]:
show_frame(corr, 'Corr')
In [ ]:
show_frame(tomo, 'tomo image')
In [ ]:
show_frame(corr - tomo, 'corr / tomo image')
Видны следы от прямого пучка (сетка на заднем фоне), но это видимо связано с тем, что прямой пучок зависит от расстояний детектор-источник (сферичность интенсивности), и прямой пучок был померян для другого рассотояния. К тому-же интенсивнось прямого пучка видимо была меньше (в 16 раз?), чем при проведениии зксперимента. (это надо проверить)
In [ ]:
white_norm = (white - black_1)
white_norm[white_norm<1] = 1
empty_norm = (empty/16 - black_1)
empty_norm[empty_norm<1] =1
my_corr = empty_norm/white_norm
my_corr[my_corr>1.1] = 1.1
show_frame(my_corr, 'my_corr image')
In [ ]:
show_frame(my_corr*65535*0.87/corr, 'my_corr/corr image')