clear; % This code illustrates possible blurring and deblurring in 2D. % It is motivated by heat diffusion in 2D. % Blurring is modeled by diffusion of heat in positive time steps. % Deblurring is done by diffusion of "heat" in negative time steps. ncsu = [lettern(5) letterc(7) letters(9) letteru(11)]; u = ncsu; newu = u; [nx ny] = size(ncsu) dt = .00006; dx = 1/(nx-1); dy = 3.2/(ny-1); subplot(1,2,1) % Forward in "time" or "blurring" mesh(u) axis([0 ny 0 nx 0 15]); %hold on for k = 1:20 for j = 2:ny-1 for i = 2:nx-1 newu(i,j) = u(i,j) + (dt/(dx*dx))*(u(i-1,j) -2*u(i,j) + u(i+1,j))... + (dt/(dy*dy))*(u(i,j-1) -2*u(i,j) + u(i,j+1)); end end mesh(newu); axis([0 ny 0 nx 0 15]); k pause; u = newu; end blurncsu = 20*u; blurncsu = blurncsu(nx:-1:1,:); blurncsu1 = uint8(blurncsu); imwrite(blurncsu1, 'blurncsu.jpg'); subplot(1,2,2) % Backward in "time" or "deblurring" mesh(u') axis([0 ny 0 nx 0 15]); %hold on for k = 1:20 for j = 2:ny-1 for i = 2:nx-1 newu(i,j) = u(i,j) - (dt/(dx*dx))*(u(i-1,j) -2*u(i,j) + u(i+1,j))... - (dt/(dy*dy))*(u(i,j-1) -2*u(i,j) + u(i,j+1)); end end mesh(newu); axis([0 ny 0 nx 0 15]); k pause; u = newu; end deblurncsu = 20*u; deblurncsu = deblurncsu(nx:-1:1,:); deblurncsu1 = uint8(deblurncsu); imwrite(deblurncsu1, 'deblurncsu.jpg');