θ - Universitätsklinikum Düsseldorf

Transcription

θ - Universitätsklinikum Düsseldorf
Universitätsklinikum
Düsseldorf
Studiengang Medizinische Physik
Heinrich-Heine-Universität Düsseldorf
Bildrekonstruktion und Bildanalyse
Prinzipien der Computertomographie
Dr. Ioannis Simiantonakis
Klinik und Poliklinik fü
für Strahlentherapie und Radioonkologie
[email protected]
Universitätsklinikum
Düsseldorf
Teil 2:
Praxis der Bildrekonstruktion
Was und wie wird gemessen?
Homogenes Objekt, monochromatische Strahlung
Inhomogenes Objekt, monochromatische Strahlung
d2
d4
Inhomogenes Objekt, polychromatische Strahlung
Hounsfield-Skala
Hounsfield-Skala
Fensterung der
Hounsfield-Skala
C/W: Center/Width
Massenschwächungskoeffizienten
Massenschwächungskoeffizienten
Bild-Berechnung
Aus den gemessenen Intensitäten Si können die Schwächungskoeffizienten
µi berechnet werden.
SS77
S6
Koordinatensystem der Projektion
•
Die Parallelstrahlgeometrie für den Winkel θ stellt ein neues Koordinatensystem
(r,s) dar, in welchem die Projektion Iθ(r) akquiriert wird:
– Die Rotationsmatrix R transformiert das Koordinatensystem (x, y) in (r, s):
r
 x   cos θ sin θ  x 
=
R
 
 =
 
s
 y   − sin θ cos θ  y 
– Das gilt für alle Punkte (x,y) für welche
r = x cosθ + y sinθ auf der Linie Iθ(r)
– RT ist die inverse, welche (r, s) in (x, y)
überführt
 x
 cos θ
T r
 =R  =
 y
 s   sin θ
− sin θ  r 
 
cos θ  s 
– s ist die Parametrisierungsvariable entlang
der Linie Iθ(r)
Projektion
•
Für den fixen Winkel θ ist die gemessene Intensität der Detektorposition r die
integrierte Dichte entlang der Linie Iθ(r):
∫
−
Iθ (r ) = I 0 ⋅ e
µ ( x , y ) ds
Lr ,θ
∫
µ ( r ⋅cosθ − s⋅sin θ , r ⋅sin θ + s⋅cosθ ) ds
= I 0 ⋅ e Lr ,θ
•
Für ein kontinuierliches Energiespektrum gilt:
∞
∫
µ ( r ⋅cosθ − s ⋅sin θ , r ⋅sin θ + s⋅cosθ ) ds
Iθ (r ) = ∫ I 0 ( E ) ⋅ e Lr ,θ
0
•
Gilt für monochromatische Wellen
Projektionsprofil
•
Jedes Intensitätsprofil Iθ(r) wird in ein Schwächungsprofil pθ(r) transformiert:
pθ (r ) = − ln
Iθ ( r )
= ∫ µ (r ⋅ cos θ − s ⋅ sin θ , r ⋅ sin θ + s ⋅ cos θ )ds
I0
Lr ,θ
– pθ(r) = 0, falls |r|>FOV/2 (FOV: Field Of View, Detektorgröße)
– pθ(r) liegt zwischen (0,2π)
– Parallelstahlansichten (π,2π) sind redundant, so dass nur Messungen für (0,π)
notwendig
Sinogramm
•
Die Überlagerung aller Projektionen (Linienintegrale) führt zum Sinogramm,
Sinogramm einem
2-D Datensatz p(r,θ)
•
Bei einem Punktobjektt:
– Sinogramm beschreibt ein Sinusoid in p(r,θ):
Projektionen
Punktobjekt
Sinogramm
Radon-Transformation
•
Die Transformation jeder Funktion f(x,y) nach p(r,θ) ist die Radon-Transformierte
p(r , θ ) = R{ f ( x, y )}
=
∞
∫
f (r ⋅ cos θ − s ⋅ sin θ , r ⋅ sin θ + s ⋅ cos θ )ds
−∞
•
Die Radon-Transformatierte hat folgende Eigenschaften:
– p(r,θ) ist periodisch in θ mit der Periode 2π
p (r , θ ) = p (r , θ + 2π )
– p(r,θ) ist symmetrisch in θ mit der Periode π
p(r ,θ ) = p(−r ,θ ± π )
Abtastung
•
Praktisch existiert eine limitierte Anzahl von Ansichten M und von Detektoren N
•
Dies hat ein diskretes Sinogramm
p(Ν∆r,Μ∆θ) zur Folge:
– Matrix mit M Reihen und N Spalten
∆r: Abtastabstand des Detektors
∆θ: Rotationsinterval zwischen nachfolgenden Ansichten
∆s: Strahlbreite
•
∆r
∆s
∆θ
Abtasttheorem besagt wie die Parameter für eine gewünschte Objektauflösung
gewählt sein sollten
Abtastung
Raumbereich
Frequenzbereich
Projektion pθ(r)
Strahlapertur ∆s
geglättete Projektion
Spaltfunktion
1/∆s
Abtastung
Raumbereich
Frequenzbereich
Geglättete Projektion
Abtastung bei ∆r
1/∆r
Abtastprojektion
1/∆s
Treppeneffekt (Aliasing)
•
Projektionaliasing - Aliasing innerhalb der Sinogrammlinien:
– Um das Aliasing zu beschränken, muß es im Frequenzraum getrennt werden
(mind. identisch mit Nulldurchgang):
1
2
∆s
≥
→ ∆r ≤
2
∆r ∆s
– Daher werden mind. 2 Stichroben pro Strahl benötigt
∆k
∆θ
•
Winkelaliasing - Aliasing außerhalb der Sinogrammlinien:
∆θ =
π kmax
kmax=1/∆r
M
k
∆k = max
N /2
for uniform sampling: ∆θ = ∆k →
Sinogramm im Frequenzraum
(2 Projektionen mit N=12)
π kmax
M
=
kmax
N
→ M =π
N /2
2
M: Ansichten, gleichmäßig verteilt um den Halbkreis
N: Anzahl der Detektorproben, verursacht N Frequenzbereichproben für jede Projektion
Rekonstruktion: Prinzip
•
Aus dem gegebenen Sinogramm p(r,θ) soll das Objekt mit Koordinaten (x,y)
wiederhergestellt werden
•
Entsprechend dem Prinzip der axiale Tomographie gilt:
– nachträgliches “Verschmieren” der akquirierten p(r,θ) entlang der Filmplatte
– für einen Punkt erhältπ man
b( x, y ) = B{ p (r ,θ )} = ∫ p( x ⋅ cos θ + y ⋅ sin θ ,θ )dθ
0
•
Die Methode wird Rückprojektion genannt
Rückprojektion: Illustration
Rückprojektion: Praktische Betrachtung
•
Annahmen:
– Ein finiter Satz von M Projektionen und ein diskretes Array von N Pixeln (xi, yj)
M
b( xi , y j ) = B{ p(rn ,θ m )} = ∑ p( xi ⋅ cos θ m + y j ⋅ sin θ m ,θ m )
m =1
Strahl
Pixel
– Für die Rekonstruktion des Pixels (xi, yj)
gibt es keinen Strahl p(rn,θn) (Detektorabtastung)
im Projektionssatz also Interpolation nötig
(normalerweise lineare Interpolation)
Detektorproben
Interpolation
– Die erhaltenen Rekonstruktionen mit der einfachen Rückprojektion erscheinen
verschmiert
Fourier Slice Theorem
Fourier Slice Theorem (Central Slice Theorem) hilft die
Verschmierung zu verstehen
•
Die Fourier-Transformierte FT P(θ,k) der Projektion
p(r,θ) ist eine Linie entlang des Ursprungs der
Fourier-Transformierten F(kx,ky) der Funktion f(x,y)
•
Mögliche Rekonstruktion:
– berechne die 1-D FT aller Projektionen p(rm,θm),
welche für F(kx,ky) auf einem Polargitter abzweigen
– überführe das Polargitter in das kartesische (mittels
Interpolation)
– führe inverse 2-D FT aus, um die gewünschte f(x,y) im
kartesischen Gitter zu erhalten
•
Zwei wichtige Beobachtungen hierzu:
– Interpolation im Frequenzraum führt zu Artefakten
– Am Rand der FT ist das Spektrum nur spärlich
abgetastet
Polargitter
Kartesisches Gitter
Gefilterte Rückprojektion: Prinzip
Um diese Betrachtungen zu verstehen, modifiziert man die Rekonstruktion wie folgt:
– Filterung der Projektionen um die Verschmierung zu kompensieren
– Durchführung der Interpolation im Ortsraum mittels Rückprojektion
Filterung
• Abgleichen aller Frequenzbeiträge im Polargitter
der FT
• Multiplikation jeder P(θ,k) mit der Rampenfunktion
• Die Größe der höherfrequenten Proben in jeder
Projektion wird hoch skaliert um ihre geringere
Menge auszugleichen
• Die Rampe ist die geeignete Skalierungsfunktion,
da die Probendichte in den Rändern der FT linear
abfällt
Gefilterte Rückprojektion: Gleichung
1-D FT von p(r,θ) P(k,θ)
Rückprojektion für alle Winkel
π
∞
Rampenfilterung
f ( x, y ) = ∫ ( ∫ P(k ,θ ) ⋅ k ⋅ ei 2π kr dk ) dθ
0 −∞
•
inverse 1-D FT p(r,θ)
Gegenüberstellung der Rückprojektion
und gefilterten Rückprojektion
nicht gefiltert
gefiltert
Filter
•
Viele verschiedene Filter verfügbar:
– Alle haben große Ausmaße Faltung aufwendig
– Deshalb Filterung üblicherweise im Frequenzraum benötigte 2 FT und
Multiplikation mit der Filterfunktion weniger komplex
•
Die verbreitesten Filter:
– Ram-Lak: originärer Rampenfilter beschränkt durch das Interval [±kmax]
– Ram-Lak mit Hanning/Hamming Glättungsfenster: unterdrückt höhere
Frequenzen um Aliasing und Rauschen zu reduzieren
Ram-Lak
Hanningfenster
Geglätteter Ram-Lak
Strahlgeometrie
•
Parallelstahlkonfiguration nicht praktisch
– benötigt für jeden Strahl eine neue
Quellenposition
•
Gewünscht wird ein Bild als “one shot”
– benötigt Fächerstrahlkonfiguration
Parallelstrahl
Fächerstrahl
3-D cone-beam
Fächerstrahl
•
•
Umschreiben der Parallelstrahlgleichung in die Fächerstrahlgeometrie
Wir erinnern uns:
– Filterung:
p *(r ,θ ) =
+ FOV / 2
∫
p(r ',θ )q(r − r ')dr '
− FOV / 2
– Rückprojektion:
π
f ( x, y ) = ∫ p *(r ,θ )dθ with r = x cos θ + y sin θ
0
– Kombination:
f ( x, y ) =
2π + FOV / 2
∫ ∫
0 − FOV / 2
p(r ',θ )q( x cos θ + y sin θ − r ')dr ' dθ
Fächerstrahl
v(x,y): Abstand zur Quelle
– Änderung der Variablen:
θ =α +β
r = R sin α
– Nach einigen weiteren Manipulationen:
f ( x, y ) =
2π + FOV / 2
∫ ∫
p(r ',θ )q( x cos θ + y sin θ − r ')dr ' dθ
0 − FOV / 2
Beachte: α, γ sind die neuen r’, r die Projektion in β
f ( x, y ) =
2π
∫
0
+ fan − angle / 2
1
γ −α
⋅
⋅
R
cos
α
p
(
α
,
β
)
(
)q(γ − α )dα d β
2
∫
v ( x, y ) − fan −angle / 2
2sin(γ − α )
3. Wichtung während Rückprojection 1. Projektion vor Wichtung
2. Filterung
3-D Aufnahme
•
•
Sequentielle CT
– Patientientisch wird nach jeder
beendeten Schichtakquisition weiter
transportiert
– Stop-Bewegung ist zeitaufwendig und
rüttelt den Patienten
– Die effektive Schichtdicke Dz ist
äquivalent zur Strahlbreite Ds
– 2 Schichten pro Dz müssen akquiriert
werden um Aliasing zu unterdücken
Spirale (helikale) CT
– Tisch bewegt sich während die Röhre
um den Patienten rotiert
– sehr verbreitete Technik
– schnelle und kontinuierliche Akquisition
– table feed (TF): axiale Translation pro
Röhrenrotation
– Schrittweite pitch = TF / Dz
Dz
Dz
Rekonstruktion: Spiral-CT
•
Tisch schreitet vorwärts (z steigt) während Röhre rotiert (β wächst)
– Rekonstruktion einer Schicht mit konstantem z benötigt Daten aus allen Winkeln β
– dies benötigt Interpolation
verfügbare Daten
sequentielle CT
Spiral-CT
interpoliert
– fallsTF=Dz/2, dann ist ein gutes pitch = (Dz/2)/Dz = 0.5
– opponierende Strahlen (β =[180°…360°]) haben (grob) die gleiche Information:
TF kann verdoppelt werden (und folglich ist pitch = 1)
– in der Praxis liegt pitch zwischen 1 und 2
– höheres pitch vermindert Dosis, Scanzeit, und Bewegungsartefakte
3-D Rekonstruktion: Cone-Beam CT
Direkte 3-D Scanmodalität
– verwendet 2-D Detektor
– benötigt nur eine Rotation um den Patienten um alle Datenzu akquirieren
(innerhalb der Limits des cone Winkels)
– Rekonstruktionsformel kann in ähnlicher Art und Weise abgeleitet werden wie
die Fächerstrahlformel (benutzt ebenfalls verschiedene Wichtungen)
– häufig verwendet Gleichung: Feldkamp-Davis-Kress
– Rückprojektion läuft ab entlang der cone-beam Strahlen
•
Vorteile:
– potentiell sehr schnell
(da nur eine Rotation)
– oft in der 3-D Angiographie
angewandt
•
Nachteile:
– Abtastproblematik an den
Extremitäten
– Abtastrate der Rekonstruktion
variiert entlang z
Kriterien der Bildqualität
•
Akquisition
– Brennfleck, Größe der Detektorelemente, table feed, Interpolationsmethode,
Probenabstand u.a.
•
Rekonstruktion
– Rekonstruktionskernel (Filter), Interpolationsprozeß, Voxelgröße
•
Rauschen
– Quantenrauschen wegen der statistischen Natur von Röntgenstrahlen
– Zunahme der Leistung reduziert Rauschen aber erhöht Dosis
– Bildrauschen abhängig vom Rekonstruktionsalgorithmus, Interpolationsfilter,
und Interpolationsmethode
– Größeres Dz reduziert Rauschen, aber verschlechtert axiale Auflösung
•
Kontrast
– abhängig von Röntgenspektrum, Strahlaufhärtung, Streuung
Bildartefakte
•
Normales Phantom
(simuliertes Wasser mit Eisenstange)
•
Schlierenartefakte
Hinzufügen von Rauschen im Sinogramm führt zu
Schlierenbildung
•
Aliasingartifakte
entstehen wenn die Anzahl der Proben sehr klein ist
(Ringbildung an scharfen Ecken)
•
Aliasingartefakte
Anzahl der Ansichten ist zu gering
Bildartefakte
•
Normales Phantom
(Plexiglasplatte mit 3 Amalgamfüllungen)
•
Strahlaufhärtungsartefakte
– Nichtlinearitäten in einer polychromatischen
Welleschwächung
(Hohe Durchlässigkeit absorbiert viele niederenergetische
Photonen, während die hochenergetischen Photonen nicht
absorbiert werden)
– Schwächung wird unterschätzt
•
Streuung
(Schwächung wird unterschätzt)
– Je größer die Schwächung, um so größer der
Anteil der Streuung
Bildartefakte
•
Partialvolumenartefakte
– entstehen fallls nur ein Teil des Strahls
eine undurchlässige Struktur durchdringt
und abgeschwächt wird
– Besonders ernst an scharfen Ecken
– Berechnete Schwächung: -ln(avg(I/I0))
– Wirkliche Schwächung: -avg(ln(I/I0))
– führt zu einer unterschätzten Schwächung
weil
-ln (avg ( I / I 0 ) < −avg (ln( I / I 0 ))
Einzelner Pixel von individuellen
Strahlen durchlaufen
I0
I
Detektorkasten
Bildartefakte
•
Bewegungsartefakte
Bewegung während der Akquisition
•
Stufenartefakte (stair step)
helikaler Akquisitionspfad wird in der
Rekonstruktion sichtbar
•
Kombination mehrerer Artefakte
Universitätsklinikum
Düsseldorf
Ultraschall-Computertomographie
mit Matlab
Ultraschall
• Eine Bildsequenz kann in einer 3-D Datenreihe (Array) von
Bildern gespeichert werden
• Beispiel:
mydata = aviread(‘mymovie.avi’);
for i=1:nFrames
I(:,:,i) = frame2im(mydata(i));
end
• Funktionen wie z.B. “mean” und “median” können entlang einer
ausgewählten Dimension vollzogen werden
Imean = mean(I,3); Mittelwert entlang der 3. Dimension
Reflexionsultraschall
• Für die meisten med. Ultraschallbilder
werden Reflexionssignale verwendet.
• Echo weist auf die Präsenz einer
Gewebsschicht hin
• Flugzeit indiziert die Tiefe
– Im A-Mode: einzelner Transducer scannt in
einer Linie entlang des Körpers
– Im B-Mode: lineares Array von Transducern
scannt eine Ebene (Schicht)
Transmissionsultraschall
• Einige Systeme verwenden die Transmission:
–
Das empfangene Signal gibt das Integral vom
Brechungsindex n(x,y) entlang des Strahls an
∫ [1 − n( x, y)] ds = L − V T
ray
w d
• Typische Applikation:
sonographische Bildgebung der Brust
Konventionelle Röntgen-CT
• Urspünglich eine einfache Methode bei der eine Röntgenröhre und
ein Film während der Bestrahlung bewegt wurden.
• Das resultierende Bild ist auf der Ebene der spezifischen Tiefe
innerhalb des Körpers fokussiert
• Unscharfe Details befinden sich auf anderen Tiefen
Fokusebene
Bewegte
Quelle
Bewegter
Film
Moderner CT-Scanner
• Patient wird durch den Scanner transportiert
• Bilder entstehen für eine Schicht pro Zeiteinheit
Bewegte
Röntgenröhre
Patient
Detektorring
Axiale Tomographie
g(ρ,θ)
ρ
g(ρ,θ=90°)
Lineares
Detektorarray
g(ρ,θ=135°)
θ
g(ρ,θ=0°)
Quelle und Detektoren
rotieren um das Objekt
Parallele
Röntgenstrahlen
Radon-Transformation
Johann Radon, österreichischer Mathematiker (1917):
“Über die Bestimmung von Funktionen durch ihre Integralwerte längs gewisser Mannigfaltigkeiten”
• Bei der Radon-Transformation integriert man über alle Linien mit
variierendem Winkel und Verschiebung
∞ ∞
g
(
ρ
,
θ
)
=
• Projektionsvorgang:
∫−∞ ∫−∞ f ( x, y ) δ [x cosθ + y sin θ − ρ ] dx dy
f(x,y)
g(ρ,θ)
Radon-Transformation
Radon-Transformation in Matlab
• [R,xp] = radon (I,theta)
– I: Bild
– Theta: verwendeter Winkelset
– R: Radon-Transformierte
(Die Reihen sind die Radon-Transformierten für jeden Winkel)
– xp: korrespondierende Koordinaten entlang der ρ-Achse
• Beispiel: Viereck
– Plot R bei 0° und 45°
– R als Bild
I = zeros(400,400);
I(150:250, 150:250) = 1.0;
theta = 0:1:180;
[R,xp] = radon(I,theta);
imagesc(theta, xp, R);
Radon-Transformation in Matlab
Originalbild
90
starker Peak bei θ = 1°, xp = -80
-100
80
70
-50
60
50
0
40
30
50
20
100
10
0
20
40
60
80
100
θ (degrees)
Flankenerkennung
(Edge detection)
120
140
160
Inverse Radon-Transformation
• Gegeben:
• Gesucht:
• Lösung:
g(ρ,θ)
f(x,y)
Rückprojektion
f ( x, y ) = ∫ g [x cos θ + y sin θ , θ ] dθ
π
0
Ergebnis der Rekonstruktion
• Die einfache Rückprojektion resultiert in einer signifikanten Anzahl
von Unschärfen
Originalbilder
Rekonstruierte Bilder mit 0,5° Winkelinkrement
Gefilterte back projection
•
Die 1-D FT von g(ρ,θ) bezüglich r ist
∞
G (ω , θ ) = ∫ g ( ρ , θ ) e − j 2πωρ dρ
−∞
•
Die Projektion von f(x,y) ist gegeben durch
g ( ρ ,θ ) = ∫
∞
∫
∞
−∞ −∞
•
f ( x, y ) δ [x cos θ + y sin θ − ρ ] dx dy
Substitution für g(ρ,θ) ergibt
G (ω ,θ ) = ∫
∞
∞
∫ ∫
∞
−∞ −∞ −∞
=∫
∞
∫
∞
−∞ −∞
f ( x, y ) δ ( x cos θ + y sin θ − ρ ) e − j2πωρ dx dy dρ
∞

f ( x, y ) ∫ δ ( x cosθ + y sin θ − ρ ) e − j 2πωρ dρ  dx dy
 −∞

∞ ∞

= ∫ ∫ f ( x, y ) e − j 2πω ( ux + vy ) dx dy 
 −∞ −∞
 u =ω cosθ , v =ω sin θ
Fourier Slice Theorem
• Gegeben
• Somit ist
1-D FT der Projektion
g ist gleich einer
radialen Schicht durch
die 2-D FT von f(x,y)
∞ ∞

G (ω , θ ) = ∫ ∫ f ( x, y ) e − j 2πω ( ux + vy ) dx dy 
 −∞ −∞
 u =ω cosθ , v =ω sin θ
G ( ρ , θ ) = [F (u, v )]u =ω cosθ , v =ω sin θ
= F (ω cos θ , ω sin θ )
Fourier Slice Theorem
g(ρ,θ)
Die FT der Funktion ergibt die Werte von F(u,v)
entlang der gestrichelten Linie in der (u,v)
Ebene
y
ρ
F(u,v)
v
r
f(x,y)
w
θ
x
u
• 1-D FT der Projektionen ergibt F(ω,θ)
• Anordnung von F(ω,θ) auf einem
rechteckigen Gitter ergibt F(u,v)
• Inverse Fouriertransformierte ergibt f(x,y)
Rückprojektion - Rekonstruktion
•
Die inverse FT von F(u,v) ist
f ( x, y ) = ∫
2π
∫
0
•
0
2π
∫
∞
−∞
0
F (ω cos θ , ω sin θ ) e j 2πω ( x cosθ + y sinθ ) ω dω dθ
Unter Verwendung des Fourier Slice Theorems ergibt sich
f ( x, y ) = ∫
2π
∫
∞
−∞
0
•
F (u, v ) e j 2π ( ux + vy ) du dv
Setze u = ω cosθ, v = ω sinθ
f ( x, y ) = ∫
•
∞
G (ω, θ ) e j 2πω ( x cosθ + y sin θ ) ω dω dθ
Umschreiben als
f ( x, y ) = ∫
π
0
∫
∞
−∞
ω G (ω, θ ) e j 2πω ( x cosθ + y sin θ ) dω dθ
Rückprojektion - Rekonstruktion
•
Folglich, erhält man die FT der Projektionen, filtert (d.h. multipliziert) sie mit einem
Rampenfilter |ω|, errechnet die inverse FT und integriert über alle Winkel θ
f ( x, y ) = ∫
π
0
 ∞ ω G (ω, θ ) e j 2πω ( x cosθ + y sin θ ) dω  dθ
 ∫−∞

Auch weichere Filter möglich,
z.B. Hamming
Gefilterte Rekonstruktion
Inverse Radon-Transformation in Matlab
• I = iradon(R, theta, interp, filter, freq_scaling, N)
• wobei
–
–
–
–
–
–
R:
vorwärtsgerichtete Radon-Transformierte
Theta:
Winkelset
Interp:
‘Ram-Lak’, ‘Hamming’, ‘Shepp-Logan’ Filter
Filter:
‘linear’
freq_scaling:1.0
N:
gewünschte Größe des Ausgabebildes
Inverse Radon-Transformation in Matlab
• Übermittlung der Radon-Transformierten eines “Phantombildes”
original
N = 400;
I = phantom(N);
rangeTheta = 0:1:180;
[R,xp]=radon(I,rangeTheta);
figure,imagesc(rangeTheta, xp, R),
title('radon');
colormap(gray);
xlabel('theta (degrees)'); ylabel('xp');
Inverse Radon-Transformation in Matlab
• Inverse Radon-Transformierte
I2 = iradon(R,rangeTheta,'linear','Hamming',1.0,N);
figure,imshow(I2,[]), title('reconstructed');
% Compute RMS error
res = I - I2;
figure, imshow(res,[]), title('residual');
fprintf('RMS error: %f\n', sqrt( mean2 (res .^ 2)));