Вы находитесь на странице: 1из 11

Exercise 1: Write a function named transform to

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)

Fig 1 Result of inverse transformation on rice.png


Functional Call from Command Window for power: >> transform('power',img) Power Law Transformation Formula is c*(img(x,y))^r Enter Constant c :1 Enter Gamma Correction value r (gamma):0.3

Fig 2 Result of power transformation on rice.png

Functional Call from Command Window for log: >> transform('log',img) Log Transformation formula is c*log(1+img(x,y)), Enter constant c :2

Fig 3 Result of log transformation on rice.png


Comparison between power and log transformation results: As we can see from the log and power transformation results that in both the cases low range of input intensities are mapped to higher range of output intensities but in the power transformation there is a slight wash out effect on the output image and in the log output image a little bit sharpness is there. When using power transformation value of gamma greater then 1 would result in a darker image and value less then 0 would result in a brighter image.

Exercise
LAB:

2: Write

function

named

myhist

to

MANUALLY compute image histogram as described in the

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);

Functional Call from Command Window: >> img=imread('rice.png'); >> imhist1(img)

Output: Bar graph:

Fig 1 Histogram of rice.png on bar graph

Stem Graph:

Fig 2 Histogram of rice.png on stem graph

Comparison between imhist() graphs and our algorithm graphs:

Figure 3

imhist () bar graph

algorithm bar graph

Figure 4

imhist () stem graph

algorithm stem graph

Exercise 3: Consider a function f(x) defined over an image


cameraman.tif with the intensities in the range [0 1], as defined below: 1x f(x) = x a). b). image intensities. Write a MATLAB program to implement f(x) on an input image. Also, show your results after transformation. 1 0 < x 0.25 0.25 < x 0.5 x > 0.5

Draw a graph for f(x) to show its influence on

Solution:
a). Graph:

Figure 1: Graph showing the influence of the function on intensities

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

Exercise 4: Write a MATLAB program for the function shown in


figure 2, on an input image cameraman.tif. Also show your results.

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;

end end imshow(img),impixelinfo,figure,imshow(img2)

Functional Call from Command Window: >> img=imread('cameraman.tif'); >> slicing2(img)

Output:

Figure 1

Original Image

Transformed Image

Вам также может понравиться