Digital Image Processing Transformation Examples
Digital Image Processing Transformation Examples
implement intensity transformations: INPUTS: 1) Image, 2) Transformation name i.e. inverse, power, or log. OUTPUTS: Show your results for each of the transformations and give a comparison between log and power transformations with reference to your findings/observations.
Solution:
M File:
function transform(name,img) if(strcmp(name,'inverse')==1) [m n]=size(img); for i=1:m for j=1:n img1(i,j)=255-img(i,j); end end imshow(img),figure,imshow(img1) end if(strcmp(name,'power')==1) img1=mat2gray(img); disp('Power Law Transformation Formula is c*(img(x,y))^r'); c=input('Enter Constant c :'); r=input('Enter Gamma Correction value r (gamma):'); [m n]=size(img1); for i=1:m for j=1:n img2(i,j)=c*img1(i,j)^(r); end end imshow(img),figure,imshow(img2) end if(strcmp(name,'log')==1) img2=mat2gray(img); [m n]=size(img2); c=input('Log Transformation formula is c*log(1+img(x,y)), Enter constant c :'); for i=1:m for j=1:n img1(i,j)=c*log(1+img2(i,j)); end end imshow(img),figure,imshow(img1) end
Functional Call from Command Window for inverse: >> img=imread('rice.png'); >> transform('inverse',img)
Functional Call from Command Window for log: >> transform('log',img) Log Transformation formula is c*log(1+img(x,y)), Enter constant c :2
Exercise
LAB:
2: Write
function
named
myhist
to
Solution:
M File:
function imhist1(img) [m n]=size(img); k=0:1:255; k(1:256)=0; for i=1:m for j=1:n if(j==img(i,j)) k(j)=k(j)+1; end end end for h=1:255 title('Bar Graph'); xlabel('gray-levels', 'fontsize', 10); ylabel('frequescy', 'fontsize', 10); bar(h,k(h),'b') % plot(h,k(h),'-') hold on; end l=imhist(img); ,figure,bar(l); ,figure, for h=1:255 title('Stem Graph'); xlabel('gray-levels', 'fontsize', 10); ylabel('frequescy', 'fontsize', 10); stem(h,k(h),'r') % plot(h,k(h),'-') hold on; end ,figure,stem(l);
Stem Graph:
Figure 3
Figure 4
Solution:
a). Graph:
b).
M File:
function slicing1(img1) [m n]=size(img1); img=im2double(img1); for i=1:m for j=1:n if(img(i,j)>0 && img(i,j)<=0.25) img2(i,j)=1-img(i,j); end if(img(i,j)>0.25 && img(i,j)<=0.5) img2(i,j)=1; end if(img(i,j)>0.5) img2(i,j)=img(i,j); end end end imshow(img),impixelinfo,figure,imshow(img2)
Functional Call from Command Window: >> img=imread('cameraman.tif'); >> slicing1(img) Output:
Figure 2
Original Image
Transformed Image
Solution:
M File:
function slicing1(img1) [m n]=size(img1); img=im2double(img1); for i=1:m for j=1:n if(img(i,j)>0 && img(i,j)<=0.25) img2(i,j)=1-img(i,j); end if(img(i,j)>0.25 && img(i,j)<=0.5) img2(i,j)=1; end if(img(i,j)>0.5)
end
img2(i,j)=2*img(i,j)-1;
Output:
Figure 1
Original Image
Transformed Image