줄리아, 매트랩 파이썬에서 라돈 변환 쓰는 법
줄리아1
단층촬영 패키지 Tomography.jl
에서 radon()
함수를 사용하면 된다.
radon(f, θ)
:f
는 이미지,θ
는 프로젝션 각도이다. 입력하지 않으면 기본적으로 0도에서 $\pi$까지 계산한다.
using Tomography
using Plots
# 팬텀 생성
f = phantom(256,2)
# 라돈 변환 계산
ℛf = radon(f)
# 그림 출력
h1 = heatmap(reverse(f, dims=1), size=(400,400));
h2 = heatmap(reverse(ℛf, dims=1), size=(400,400));
heatmap(h1, h2, size=(800,400))
환경
- OS: Windows10
- Version: Julia 1.7.1, Tomography 0.1.5
매트랩2
라돈변환 radon
과 라돈역변환 iradon
을 지원한다.
radon(P, theta)
: 팬텀P
의theta
각도에 대한 라돈 변환을 반환한다.theta
를 입력하지 않으면0:179
의 각도로 실행한다.iradon(R, theta)
: 라돈변환은 각도를 대입하지 않아도 쓸 수 있지만 역변환은 반드시 각도를 대입해야한다.
p=phantom(); %팬텀 생성
Rp=radon(p); %라돈변환 계산
IRp=iradon(Rp,0:179); %라돈역변환 계산
%그림 그리기
figure()
%첫번째 그림 팬텀
subplot(2,2,1)
imagesc(p)
colorbar
title('Phantom')
%두번째 그림 라돈변환
subplot(2,2,2)
imagesc(Rp)
colorbar
title('Radon Transform of p')
%세번째 그림 라돈역변환
subplot(2,2,3)
imagesc(IRp)
colorbar
title('Reconstruction Image')
환경
- OS: Windows10
- Version: R2020b
파이썬3
사이킷이미지 패키지 skimage
의 transform
모듈에서 radon
, iradon
매트랩과는 다르게 변환과 역변환 모두 각도를 대입하지 않으면 0:179
로 실행한다.
import matplotlib.pyplot as plt
from skimage.data import shepp_logan_phantom
from skimage.transform import radon, iradon
#Phantom 생성
p = shepp_logan_phantom() #default size=(400,400)
#라돈변환 계산
Rp = radon(p)
#라돈역변환 계산
IRp = iradon(Rp)
#그림 그리기
fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(12, 4.5))
#첫번째 그림 Phantom
ax1.set_title("Phantom")
ax1.imshow(p)
#두번째 그림 라돈변환
ax2.set_title("Radon transform of p")
ax2.set_xlabel("Projection angle (deg)")
ax2.set_ylabel("Projection position (pixels)")
ax2.imshow(sinogram)
#세번째 그림 라돈역변환
ax3.set_title("Reconstruction Image")
ax3.imshow(IRp)
#그림 출력
fig.tight_layout()
plt.show()
환경
- OS: Windows10
- Version: Python 3.9.2, scikit-image 0.18.1