Python implementuje diskrétnu radónovú transformáciu

Python Implements Discrete Radon Transform



Pretože vo svojej nedávnej práci potrebujem použiť radónovú transformáciu, jednoducho som sa naučil príslušný obsah. Na internete existuje veľa úvodov o transformácii Randon, nájdete ju sami, nebudem to opakovať, ale veľa ľudí ju používa priamo v MATLABe radón () Funkcia na dokončenie tejto transformácie a moja skupina si nekúpila MATLAB, takže pri priamom používaní MATLABu existuje riziko autorských práv, takže na implementáciu môžem zvážiť iba použitie Pythonu a teraz uverejniť zdrojový kód a niektoré výsledky, ktoré s vami zdieľať a diskutovať:

from scipy import ndimage import numpy as np import matplotlib.pyplot as plt import imageio from cv2 import cv2 def DiscreteRadonTransform(image, steps): res = np.zeros((steps, len(image[0])), dtype='float64') for s in range(steps): rotation = ndimage.rotate(image, -s*180/steps, reshape=False).astype('float64') #print(sum(rotation).shape) res[:,s] = sum(rotation) return res #Read picture #image = cv2.imread('straightLine.png', cv2.IMREAD_GRAYSCALE) #image = cv2.imread('whiteLineModify.png', cv2.IMREAD_GRAYSCALE) image=imageio.imread('shepplogan.jpg').astype(np.float64) radon = DiscreteRadonTransform(image, len(image[0])) #Draw the original image and the corresponding sinogram graph plt.subplot(1, 2, 1) plt.imshow(image, cmap='gray') plt.subplot(1, 2, 2) plt.imshow(radon, cmap='gray') plt.show()

Pretože sa radónová transformácia často používa pri lekárskom zobrazovaní (CT) a detekcii priamky, pri kontrole kódu som použil dva originálne obrázky: jeden je obrazom modelu Shepp-Logan, druhý je obrazom iba s jednou priamkou. Tu sú konkrétne výsledky:
Shepp-Logan Radon , , Sinogram。
Vyššie uvedené je výsledkom môjho testu. Pôvodný obrázok vľavo a pravý je výsledkom radónovej transformácie na ľavom obrázku. Podľa môjho vizuálneho pozorovania sú získané výsledky priamo používané ostatnými v MATLABe radón () Výsledok funkcie je rovnaký. Ak niečo nie je v poriadku, môžete ich kritizovať a napraviť.