Restoring Undersampled Image
Transcript of Restoring Undersampled Image
-
7/29/2019 Restoring Undersampled Image
1/9
Image Restoration of Undersampled Radial MRI. Iterative Image
Reconstruction using Conjugate Gradient Method.
Nikhil Prakash 09026015
Objective Function :
Objective Function is choosen as :
()
2 + lambdaTV * ()
Penalty Function is Total Variation Constraint with lambdaTV = 0.0001
Snippet of Objective Function:
% Objective Functionfunction res = objective(x,dx,t,sampler,data,lambdaTV,lambdaFOV)
x=x+t*dx;obj = (ifftshift(fft2(ifftshift(x))).*sampler-data.*sampler) ;tv = lambdaTV*totVar(x);
res=0.5*obj(:)'*obj(:)+tv ;end
Snippet of Total Variation Operator :
function tot_var = totVar(x)% Defining the Total Variation Operator using 1st Order DerivativesD_x = filter2([1 -1 0],x,'same'); % Mask used [1 -1 0] and [1;-1;0]D_y = filter2([1;-1;0],x,'same');
tot_var = sum(sum(sqrt(D_x.*conj(D_x)+D_y.*conj(D_y))));end
Snippet of Gradient of Objective Function :
% Gradient of the Objective Functionfunction grad = wGradient(x,sampler,data,lambdaTV,lambdaFOV)gradObj=grdObj(x,sampler,data);grdTV = lambdaTV*gTV(x);grad =gradObj +grdTV ; %end
Gradient of Objective Function:% Computes the Gradient of the Objective Functionfunction grObj = grdObj(x,sampler,data)
grObj =
ifftshift(ifft2(ifftshift(ifftshift(fft2(ifftshift(x))).*sampler-data.*sampler)));end
-
7/29/2019 Restoring Undersampled Image
2/9
Snippet of Gradient of Total Variation Operator :
function grad = gTV(x)% Compute gradient of TV operator
D_x = filter2([1 -1 0],x,'same');D_y = filter2([1;-1;0],x,'same');D_xx = filter2([0 -1 1],D_x,'same');D_yy = filter2([0;-1;1],D_y,'same');
grad = D_xx+D_yy;end
Convergence of the Objective Function for Brain Image with lambdaTV = 0.0001:
0 , obj: 1993729273.944331 1 , obj: 511158879.897372 2 , obj: 448736071.395206 3 , obj: 239421067.7290404 , obj: 44255815.614460 5 , obj: 9797835.200128 6 , obj: 2191013.454779 7 , obj: 1255537.926781
8 , obj: 784721.469961 9 , obj: 565550.364713 10 , obj: 360782.104463 11 , obj: 237225.345347
12 , obj: 150293.551529 13 , obj: 89562.563465 14 , obj: 78034.751960 15 , obj: 47026.431105
16 , obj: 32970.266492 0 , obj: 7256.436213 1 , obj: 5748.548632 2 , obj: 2050.210907
3 , obj: 1859.806695 4 , obj: 816.480357 5 , obj: 196.615224 6 , obj: 48.528138
7 , obj: 43.166966 8 , obj: 34.421854 9 , obj: 28.663710 10 , obj: 17.827784
11 , obj: 11.413368 12 , obj: 8.951188 13 , obj: 8.867346 14 , obj: 8.788471
15 , obj: 5.517849 16 , obj: 5.245826 0 , obj: 3.580483 1 , obj: 3.580483
2 , obj: 2.695148 3 , obj: 2.695148 4 , obj: 2.693104 5 , obj: 2.692754
6 , obj: 2.692661 7 , obj: 2.692651 8 , obj: 2.692625 9 , obj: 2.692600
10 , obj: 2.692596 11 , obj: 2.692594 12 , obj: 2.692592 13 , obj: 2.692589
14 , obj: 2.692589 15 , obj: 2.692588 16 , obj: 2.692588 0 , obj: 2.692330
1 , obj: 2.692330 2 , obj: 2.692330 3 , obj: 2.692330 4 , obj: 2.692330
5 , obj: 2.692330 6 , obj: 2.692330 7 , obj: 2.692330 8 , obj: 2.692330
9 , obj: 2.692330 10 , obj: 2.692330 11 , obj: 2.692330 12 , obj: 2.692330
13 , obj: 2.692330 14 , obj: 2.692330 15 , obj: 2.692330 16 , obj: 2.692330
0 , obj: 2.692330 1 , obj: 2.692330 2 , obj: 2.692330 3 , obj: 2.692330
4 , obj: 2.692330 5 , obj: 2.692330 6 , obj: 2.692330 7 , obj: 2.692330
8 , obj: 2.692330 9 , obj: 2.692330 10 , obj: 2.692330 11 , obj: 2.692330
12 , obj: 2.692330 13 , obj: 2.692330 14 , obj: 2.692330 15 , obj: 2.692330
16 , obj: 2.692330
Elapsed time is 412.222283 seconds.
Convergence of the Objective Function for Brain Image with lambdaTV = 0:
0 , obj: 1992954498.853955 1 , obj: 510937356.936636 2 , obj: 448426869.455990
3 , obj: 239070799.424310 4 , obj: 44149222.438662 5 , obj: 9766538.244048 6 , obj: 2184625.687752
7 , obj: 1250896.034374 8 , obj: 780470.057160 9 , obj: 562839.203280 10 , obj: 358407.283518
11 , obj: 235882.818957 12 , obj: 149535.225477 13 , obj: 88759.968849 14 , obj: 77441.706478
15 , obj: 46666.113689 16 , obj: 32759.488751 0 , obj: 7210.004195 1 , obj: 5645.271527
2 , obj: 2037.207402 3 , obj: 1825.739828 4 , obj: 809.469998 5 , obj: 202.496006
6 , obj: 46.639225 7 , obj: 37.851836 8 , obj: 29.582820 9 , obj: 27.280930
10 , obj: 16.610719 11 , obj: 7.573183 12 , obj: 5.588259 13 , obj: 2.810791
14 , obj: 1.426893 15 , obj: 0.623316 16 , obj: 0.489831 0 , obj: 0.070924
1 , obj: 0.048217 2 , obj: 0.039335 3 , obj: 0.035199 4 , obj: 0.0236155 , obj: 0.012671 6 , obj: 0.008235 7 , obj: 0.004060 8 , obj: 0.003114
-
7/29/2019 Restoring Undersampled Image
3/9
9 , obj: 0.001458 10 , obj: 0.001006 11 , obj: 0.000600 12 , obj: 0.000297
13 , obj: 0.000265 14 , obj: 0.000151 15 , obj: 0.000111 16 , obj: 0.000102
0 , obj: 0.000025 1 , obj: 0.000018 2 , obj: 0.000007 3 , obj: 0.000003
4 , obj: 0.000003 5 , obj: 0.000001 6 , obj: 0.000001 7 , obj: 0.000001
8 , obj: 0.000001 9 , obj: 0.000000 10 , obj: 0.000000 11 , obj: 0.000000
12 , obj: 0.000000 13 , obj: 0.000000 14 , obj: 0.000000 15 , obj: 0.000000
16 , obj: 0.000000 0 , obj: 0.000000 1 , obj: 0.000000 2 , obj: 0.000000
3 , obj: 0.000000 4 , obj: 0.000000 5 , obj: 0.000000 6 , obj: 0.000000
7 , obj: 0.000000 8 , obj: 0.000000 9 , obj: 0.000000 10 , obj: 0.000000
11 , obj: 0.000000 12 , obj: 0.000000 13 , obj: 0.000000 14 , obj: 0.000000
15 , obj: 0.000000 16 , obj: 0.000000
Elapsed time is 75.649507 seconds.
Proof of Convergence of Total Variation Operator:
0 , obj: 15282.439602 1 , obj: 13127.096903 2 , obj: 9223.040683 3 , obj: 7237.221140
4 , obj: 6399.667856 5 , obj: 5125.834846 6 , obj: 4656.835214 7 , obj: 3899.267395
8 , obj: 3404.062485 9 , obj: 3013.188067 10 , obj: 2652.292002 11 , obj: 2404.600366
12 , obj: 2136.392473 13 , obj: 1952.372743 14 , obj: 1769.725970 15 , obj: 1628.12915916 , obj: 1487.427056 0 , obj: 1464.149595 1 , obj: 1461.809791 2 , obj: 1401.736620
3 , obj: 1389.461512 4 , obj: 1229.434364 5 , obj: 1129.120526 6 , obj: 1063.352190
7 , obj: 1017.786372 8 , obj: 995.905994 9 , obj: 976.440610 10 , obj: 952.905847
11 , obj: 936.946186 12 , obj: 915.108980 13 , obj: 908.842721 14 , obj: 904.323093
15 , obj: 871.524397 16 , obj: 861.322039 0 , obj: 749.905477 1 , obj: 705.985899
2 , obj: 693.366423 3 , obj: 674.274457 4 , obj: 664.416862 5 , obj: 659.423687
6 , obj: 652.854873 7 , obj: 648.419987 8 , obj: 644.428143 9 , obj: 639.430398
10 , obj: 630.034076 11 , obj: 629.667666 12 , obj: 621.854552 13 , obj: 621.118518
14 , obj: 620.840786 15 , obj: 608.279999 16 , obj: 606.192425 0 , obj: 597.323850
1 , obj: 592.371200 2 , obj: 589.989561 3 , obj: 575.425214 4 , obj: 569.537686
5 , obj: 566.219742 6 , obj: 562.304779 7 , obj: 560.209643 8 , obj: 559.748286
9 , obj: 558.520389 10 , obj: 553.687262 11 , obj: 553.269843 12 , obj: 550.783220
13 , obj: 547.105553 14 , obj: 542.421604 15 , obj: 539.394905 16 , obj: 534.266129
0 , obj: 526.599844 1 , obj: 525.564364 2 , obj: 522.686665 3 , obj: 520.712948
4 , obj: 515.440048 5 , obj: 511.713100 6 , obj: 509.297076 7 , obj: 506.155038
8 , obj: 505.961005 9 , obj: 504.188587 10 , obj: 503.189197 11 , obj: 502.899314
12 , obj: 499.600659 13 , obj: 498.571091 14 , obj: 496.375706 15 , obj: 494.567194
16 , obj: 493.706012
Elapsed time is 55.155752 seconds.
-
7/29/2019 Restoring Undersampled Image
4/9
Initial Degraded Image
-
7/29/2019 Restoring Undersampled Image
5/9
Final Restored Image with lambda = 0.0001
-
7/29/2019 Restoring Undersampled Image
6/9
Restored Image with lambdaTV = 0
-
7/29/2019 Restoring Undersampled Image
7/9
Image Resulted with only TV Operator
-
7/29/2019 Restoring Undersampled Image
8/9
Restored Image of Phantom with lambda = 0.0001
-
7/29/2019 Restoring Undersampled Image
9/9
A Better Stopping Criterion
After some Iterations Value of Objective Function gets stabilized and thus code needs to be stopped
Thus a Stopping criteria is needed in the following while loop:
while (f1 > f0 - alpha*t*abs(g0(:)'*dx(:)))^2 & (lsiter 6break;
endend
FOV Penalty Function :
Square of 384x384 centred at (256,256) is used as FOV.
FOV Penalty function was used but the function introduced didnt converged
% Choosing FOV as a square of size 384 centred at (256,256)
% Computes FOV Operatorfunction fov = calc_fov(x)
y = x;for i=64:448
for j=64:448y(i,j) = 0;
endendfov = sum(sum(y.*y));
end
% Computes grad FOV Operatorfunction grd_fov = calc_grad_fov(x)
y=x;for i=64:448
for j=64:448y(i,j) = 0;
endendgrd_fov = sum(sum(2*y));
end