====== Počítačová tomografie (CT) - přímá projekce ====== [[http://en.wikipedia.org/wiki/Radon_transform|Radonova transformace]] je matematická transformace, který se používá například při počítačové tomografii. ===== Stručné zadání ===== /* - Najděte analyticky či graficky maximum a minimum //p// a //q// z rovnic (2) níže. Předpokládejte, že //x// a //y// jsou omezené a platí \max{(x)}=-\min{(x)}, \max{(y)}=-\min{(y)} a \theta\in\langle 0,\pi\rangle. [0.5b.] */ - Najděte analyticky či graficky maximální absolutní hodnotu p_m = \max |p| a q_m = \max |q|, kde p=x\cos\theta+y\sin\theta, q=-x\sin\theta+y\cos\theta a (x,y)\in [-x_m,x_m] \times [ -y_m, y_m]. [0.5b.] - Diskretizujte rovnici (1). [0.5b.] - Naprogramujte funkci //{{courses:a6m33zsl:myradon.m?linkonly|imgRadon=myRadon(img,theta)}}// která vrátí přímou Radonovu transformaci //imgRadon// [(2p_m+1) \times k] obrázku //image// [m\times n] pro úhly //theta// [1\times k]. Úhly zadávejte ve stupních. Dodržte šablonu funkce. [3b.] - Pomocí vámi napsané funkce transformujte Shepp-Loganův fantom, který si můžete vytvořit funkcí //phantom(vel)//, parametrem funkce je velikost fantomu. Do reportu vložte výsledek spočítaný na fantomu s velikostí 256px pro úhly 0,1\ldots 179^\circ. Nezapomeňte na správná měřítka a popisy os. [1b.] ===== Podrobný popis ===== /* V tomto cvičení se seznámíte se vznikem a měřením signálu v počítačové tomografii, přímou Radonovou transformací. Radonův obraz funkce (obrázku) f(x,y) označme J(\theta,p). */ Souřadná soustava //(p,q)// vznikla pootočením souřadné soustavu //(x,y)// o zvolený úhel \theta p=x\cos\theta+y\sin\theta ~~~~;~~~~ q=-x\sin\theta+y\cos\theta //(2)// a zpětná transformace je tedy následující x=p\cos\theta-q\sin\theta ~~~~;~~~~ y=p\sin\theta+q\cos\theta //(3)// Úhel \theta určuje otočení projekce proti ose //x// a parametr //p// je vzdálenost projekční přímky od počátku. Vztah soustav //x,y// a //p,q// při úhlu \theta ilustruje obrázek. {{ :courses:a6m33zsl:ct_projection_souradnice.png?300 |Ilustrační obrázek projekce}} Radonova transformace převádí obraz v kartézských souřadnicích //x// a //y// do Radonova prostoru o souřadnicích //p// a \theta. Výsledná Radonova projekce ze souřadného systému obrázku //(x,y)// do Radonova prostoru (\theta,p) je dána integrálem J(\theta,p) = \int_{-\infty}^\infty f\left ( p\cdot\cos(\theta) - q\cdot\sin(\theta) ~ , ~ p\cdot\sin(\theta) + q\cdot\cos(\theta) \right ) dq //(1)// ===== Možný postup ===== - Nastavte si souřadnou soustavu obrázku tak, aby bod //[0,0]// ležel uprostřed. - Ze vztahů odvozených v 1. bodě zadání vypočítejte maximální a minimální hodnoty //p// a //q// z transformací //(x,y)// na //(p,q)// podle rovnice (2). - Zvolte celočíselnou diskretizaci //p// v rozsahu //'max p'//, //'min p'//, a //q// v rozsahu //'max q'//, //'min q'//.. - Pro všechny //p//, //q// a \theta vypočtěte J(\theta,p) podle rovnice (1). * Pro body vyjádřené v souřadnicích //p//, //q// s otočením \theta vypočítejte souřadnice //x//, //y//. * Pomocí [[http://cs.wikipedia.org/wiki/Interpolace|interpolace]] ([[http://www.mathworks.com/help/matlab/ref/interp2.html|interp2]]) najděte intenzity v těchto bodech. * Numericky vypočítejte J(\theta,p) (integrál diskretizujme). //Poznámka: čím méně for cyklů použijete, tím rychleji vám výpočet poběží.// Doporučujeme odladit kód na malém fantomu, např. 64\times 64px a teprve pak jej pustit na data 256\times 256px. Výsledek svého snažení porovnejte s funkcí [[http://www.mathworks.es/es/help/images/ref/radon.html|radon]], která je standardně implementovaná v Matlabu a do zprávy vložte rozdílový obrázek. {{tag>medical CT projection Radon filter}}