๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Study/Bio, Medical Engineering

[Bio] #3 CT(Computed Tomography), matlab์œผ๋กœ CT ๊ตฌํ˜„ํ•˜๊ธฐ(๋ผ๋ˆ ์—ญ๋ณ€ํ™˜)

by ์œ ๋ฏธ๋ฏธYoomimi 2023. 7. 26.

 

์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์”จํ‹ฐ(CT) ์ดฌ์˜์ด๋ผ๊ณ  ๋งํ•˜๋Š”

์ปดํ“จํ„ฐ๋‹จ์ธต์ดฌ์˜(Computed Tomography scan)์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž.

 

 


CT scanner

CT๋ž€?

CT scanner์˜ ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ์•Œ ์ˆ˜ ์žˆ๋“ฏ์ด,

์—ฌ๋Ÿฌ ๋ฐฉํ–ฅ์—์„œ ์—‘์Šค์„  ํˆฌ๊ณผ๊ธฐ๋ฒ•์œผ๋กœ

์ธ์ฒด ๋‹จ๋ฉด์„ ์ดฌ์˜ํ•˜์—ฌ ๋ณต์›ํ•˜๋Š” ์˜๋ฃŒ์˜์ƒ์ดฌ์˜๋ฒ•์ด๋‹ค.

 

์ถœ์ฒ˜: ์‚ผ์„ฑ์„œ์šธ๋ณ‘์› ํ™ˆํŽ˜์ด์ง€

 

์œ„์˜ ์‚ฌ์ง„์ฒ˜๋Ÿผ ์ธ์ฒด์˜ ํšก๋‹จ๋ฉด ํ•˜๋‚˜์— ๋Œ€ํ•ด,

์ „ ๋ฐฉํ–ฅ์—์„œ X์„ ์„ ์†ก, ์ˆ˜์‹ ํ•˜์—ฌ ์—ฌ๋Ÿฌ์žฅ์˜ ์˜์ƒ์„ ์ดฌ์˜ํ•ด

ํšก๋‹จ๋ฉด ํ•˜๋‚˜์˜ ์˜์ƒ์œผ๋กœ ํ•ฉํ•œ๋‹ค.

 

X์„ ์„ ํˆฌ๊ณผํ•˜๋Š” ๋ชจ์Šต(์™ผ)๊ณผ sinogram(์˜ค)

 

์™ผ์ชฝ ์‚ฌ์ง„์˜ ํฐ์ƒ‰ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด๋ฉด,

ํˆฌ๊ณผํ•œ X์„ ๋“ค์ด ํ•œ ํ‰ํ–‰ํ•œ ์„ผ์„œ์— ๊ฐ์ง€๋˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์ด๋•Œ ์„ผ์„œ์— ๋งบํžŒ X์„  ํก๊ด‘๋„๋ฅผ ์—ฌ๋Ÿฌ ๋ฐฉํ–ฅ์— ๋Œ€ํ•ด ํ•ฉํ•œ ๋’ค

๊ทธ๋ž˜ํ”„๋กœ ์‹œ๊ฐํ™”ํ•œ ๊ฒƒ์ด ์˜ค๋ฅธ์ชฝ ์‚ฌ์ง„์˜ ์‚ฌ์ด๋…ธ๊ทธ๋žจ(sinogram)์ด๋‹ค.

 

 

 

์—ฌ๊ธฐ์„œ ์งš๊ณ  ๋„˜์–ด๊ฐˆ ๊ฐœ๋…์ด '๋ผ๋ˆ ๋ณ€ํ™˜(Radon transform)'์ด๋‹ค.

 

2์ฐจ์› Radon Transform

 

์˜ ๊ธฐํ•˜์ ์ธ ์˜๋ฏธ๋Š”,

ํ•จ์ˆ˜ f๋ฅผ ์›์ ์—์„œ s(๊ฑฐ๋ฆฌ)๋งŒํผ ๋–จ์–ด์ ธ ์žˆ๊ณ  α(๊ฐ)์™€ ์ˆ˜์ง์ธ ๋ชจ๋“  ์ ์—์„œ ์ ๋ถ„ํ•œ ๊ฒƒ์ด๋‹ค.

์ฆ‰ ํŠน์ • ๊ฐ๋„์™€ ๊ฑฐ๋ฆฌ์— ๋Œ€ํ•œ ํˆฌ๊ณผ๋„ ๊ฐ’์„ ๊ฐ–๋Š” projection ๋ฐ์ดํ„ฐ๊ฐ€ ๋œ๋‹ค.

 

sinogram์€ ์ด๋Ÿฌํ•œ ๋ผ๋ˆ ๋ณ€ํ™˜(Radon transform)์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ ๊ฒฐ๊ณผ์ด๋ฉฐ,

์šฐ๋ฆฌ๋Š” sinogram์˜ ์—ญ ๋ผ๋ˆ ๋ณ€ํ™˜์„ ํ†ตํ•ด ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 


matlab ๋‚ด์žฅ ํ•จ์ˆ˜๋กœ ํŒฌํ…€ ์ด๋ฏธ์ง€์˜ sinogram์„ ๋ฝ‘๊ณ  ๋‹ค์‹œ ์—ญ๋ณ€ํ™˜ ํ•ด๋ณด์ž.

 

obj = phantom(256);
imagesc(obj); colormap gray; axis image; axis off;

Shepp Logan phantom image

์œ„์™€ ๊ฐ™์ด 256*256 size์˜ phantom ์ด๋ฏธ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

phantom(n)์€ n*n phantom ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋ฉฐ,

imagesc๋Š” ๋ฐฐ์—ด์„ ์ด๋ฏธ์ง€๋กœ ์‹œ๊ฐํ™”ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜๋‹ค.

 

thetas = linspace(0,180,256);
[sinogram, x] = radon(obj, thetas);
imagesc(sinogram);

 

๊ฐ์„ 0๋ถ€ํ„ฐ 180๋„๊นŒ์ง€ ์ผ์ •ํ•˜๊ฒŒ 256๊ฐœ๋กœ ๋‚˜๋ˆ 

built-in radon function์œผ๋กœ ํ•ด๋‹น ๊ฐ๋“ค์— ๋Œ€ํ•ด projectionํ•ด์ฃผ๋ฉด sinogram์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋•Œ [sinogram, x] = radon(obj, thetas); ์—์„œ

sinogram์€ ๋ผ๋ˆ๋ณ€ํ™˜์˜ ๊ฒฐ๊ณผ๋กœ ์–ป์–ด์ง€๋Š” projection ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๋Š” 2์ฐจ์› ๋ฐฐ์—ด์ด๋‹ค.

x๋Š” ๋ผ๋ˆ ๋ณ€ํ™˜ ๊ฒฐ๊ณผ์˜ ๊ฑฐ๋ฆฌ ๊ฐ’ ๋ฐ์ดํ„ฐ์ธ๋ฐ, ์—ฌ๊ธฐ์„  ํ•„์š”์—†๋‹ค.

 

์ด๋ฅผ ํ†ตํ•ด ์–ป์€ sinogram์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

phantom ์ด๋ฏธ์ง€์˜ sinogram

 

 

CT์˜ ์›๋ฆฌ๋Œ€๋กœ๋ผ๋ฉด

์šฐ๋ฆฌ๊ฐ€ ๋‚ด์žฅ phantom ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ์–ป์€ phantom์ด๋ฏธ์ง€๊ฐ€ ์ง„์งœ ์ธ์ฒด๊ฐ€ ๋  ๊ฒƒ์ด๊ณ ,

X์„ ์„ ํˆฌ๊ณผํ•ด ์–ป์€ ๊ฐ€๊ณต ์ „์˜ ๋ฐ์ดํ„ฐ๊ฐ€ sinogram์ด๋‹ค.

์ด sinogram์„ ์—ญ๋ณ€ํ™˜ ํ•˜๊ธฐ ์ „๊นŒ์ง€ ์šฐ๋ฆฌ๋Š” ์ธ์ฒด ๋‚ด๋ถ€ ์ด๋ฏธ์ง€๋ฅผ ์•Œ ์ˆ˜ ์—†๋‹ค.

 

์ด์ œ ์—ญ๋ณ€ํ™˜์„ ํ†ตํ•ด ์šฐ๋ฆฌ๊ฐ€ CT ์ดฌ์˜์œผ๋กœ ๋ณด๊ฒŒ ๋  ์ด๋ฏธ์ง€๋ฅผ ์–ป์–ด๋ณด์ž.

 


matlab์— ๋‚ด์žฅ๋œ ๋ผ๋ˆ ์—ญ๋ณ€ํ™˜ ํ•จ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

I = iradon(R,theta)
I = iradon(R,theta,interp,filter,frequencyScaling,outputSize)

filter๋ฅผ ์‚ฌ์šฉํ•ด ์—„๋ฐ€ํžˆ ๋ณ€ํ™˜ํ•˜๋ฉด ๋” ์ข‹๊ฒ ์ง€๋งŒ,

์ผ๋‹จ ๊ฐ„๋‹จํžˆ ์ฒซ๋ฒˆ์งธ ๋ฐฉ์‹์œผ๋กœ ์—ญ๋ณ€ํ™˜ํ•ด๋ณด์ž.

 

I = iradon(sinogram,thetas);
imagesc(I); colormap gray;

๋‚ด์žฅ iradon function์„ ์‚ฌ์šฉํ•ด ์—ญ๋ณ€ํ™˜

 

์˜ค!

sinogram์˜ ์—ญ๋ณ€ํ™˜์œผ๋กœ ์›๋ณธ ๋ฐ์ดํ„ฐ์™€ ๊ฑฐ์˜ ์ผ์น˜ํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์–ป์—ˆ๋‹ค.

 

 

 

 

 

์ด๋ฒˆ์—๋Š” ์ง์ ‘ ๋ผ๋ˆ ์—ญ๋ณ€ํ™˜ ์ฝ”๋“œ๋ฅผ ์งœ๋ณด์ž.

์—ฌ๊ธฐ์„œ Back-projection ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.

 

์ด ๋ฐฉ๋ฒ•์€ ์‰ฝ๊ฒŒ ๋งํ•ด sinogram์˜ ๊ฐ ์—ด ๋ฐ์ดํ„ฐ(ํ•œ ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ projection ๋ฐ์ดํ„ฐ)๋ฅผ ์ถ”์ถœํ•ด

ํ•ด๋‹น ๊ฐ๋งŒํผ ํšŒ์ „์‹œํ‚จ ๋’ค ๋‹ค์‹œ ํ•ฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

[row, col] = size(sinogram);
backproj = zeros(size(sinogram));
for i=1:1:length(thetas)
    backproj = backproj + imrotate(repmat(sinogram(:, i), [1,col]), -thetas(i), 'bilinear', 'crop');
end
backproj=backproj';
figure;
imagesc(backproj); colormap gray; axis image

 

๋ฐ˜๋ณต๋ฌธ ์•ˆ์„ ๋ณด์ž.

sinogram(:, i)๋ฅผ col๋ฒˆ ๋ฐ˜๋ณตํ•˜์—ฌ 2์ฐจ์› ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ , ๊ฐ์— ๋Œ€ํ•ด ํšŒ์ „์‹œ์ผœ ํ•ฉํ•˜๊ณ  ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด sinogram์˜ ์—ด ๋ฐ์ดํ„ฐ๊ฐ€ ํ–‰ ๋ฐฉํ–ฅ์œผ๋กœ ๋ณต์‚ฌ๋˜๊ณ , ๊ทธ ์ด๋ฏธ์ง€๋ฅผ ํ•ด๋‹น ๊ฐ์— ๋งž๊ฒŒ ํšŒ์ „์‹œ์ผœ ํ•ฉํ•˜๊ฒŒ ๋œ๋‹ค.

 

(๊ทธ๋ƒฅ backproj๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด 90๋„ ๋Œ์•„๊ฐ€ ์žˆ๊ธธ๋ž˜ ์ „์น˜์‹œ์ผœ์ฃผ์—ˆ๋‹ค.)

 

back-projection ๋ฐฉ์‹์œผ๋กœ ์—ญ๋ณ€ํ™˜ํ•œ ์ด๋ฏธ์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

 

์˜ค!

 

ํฌ๋ฟŒ์—ฐ ๋Š๋‚Œ์ด ์„ž์ด๊ณ  ์™œ๊ณก, blur ํšจ๊ณผ๊ฐ€ ๊ฐ€๋ฏธ๋œ ๋“ฏํ•˜๊ธด ํ•˜์ง€๋งŒ..

์›๋ณธ ์ด๋ฏธ์ง€๋ฅผ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

 

 


 

 

์•ž์œผ๋กœ ๋ฐ”์ด์˜ค ์ชฝ์„ ๋” ๊ณต๋ถ€ํ•˜๊ฑฐ๋‚˜ ์—ฐ๊ตฌํ•  ์ผ์ด ์žˆ์„์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ..

์ „์— ๊ณต๋ถ€ํ–ˆ๋˜ ๋‚ด์šฉ๋“ค์ด ํ•œ๋ฒˆ ๋“ค์–ด์„œ๋Š” ์žŠ์–ด๋ฒ„๋ฆด ๊ฒƒ ๊ฐ™์€ ๊ฒƒ๋“ค์ด๋ผ,

์ข…์ข… ์ƒ๊ฐ๋‚  ๋•Œ ์ •๋ฆฌํ•˜๋Ÿฌ ์™€์•ผ๊ฒ ๋‹ค!

 

 

 

 

2023.07.25 - [Study/Bio Technology] - [Bio] ๋ฐ”์ด์˜ค์ „๊ธฐ์ „์ž #2 Matlab์œผ๋กœ DFT ๊ตฌํ˜„ํ•˜๊ธฐ

 

[Bio] ๋ฐ”์ด์˜ค์ „๊ธฐ์ „์ž #2 Matlab์œผ๋กœ DFT ๊ตฌํ˜„ํ•˜๊ธฐ

์ด๋ฏธ์ง• ์‹œ์Šคํ…œ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๊ฒฐ๊ตญ ์‹ ํ˜ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ๋”ฐ๋ผ์„œ ์‹ ํ˜ธ ์ฒ˜๋ฆฌ์— ๊ธฐ์ดˆ๊ฐ€ ๋˜๋Š” ํ‘ธ๋ฆฌ์— ๋ณ€ํ™˜(Fourier Transform)๊ณผ ์—ญ๋ณ€ํ™˜(Inverse Fourier Transform)์„ ์•Œ์•„์•ผ ํ•œ๋‹ค. (์‹ ํ˜ธ ๋ฐ ์‹œ์Šคํ…œ ๊ณผ

yoomimi.tistory.com