Lets Learn together... Happy Reading

" Two roads diverged in a wood, and I,
I took the one less traveled by,
And that has made all the difference "-Robert Frost

Black and White-Optical illusion

Today, Some of my friends in Facebook posted black and white optical illusion photo saying 'ITS FREAKING AWESOME'.
After seeing the image, I found it's actually black and white illusion. Yes, convert the image to binary and do logical not of the image. When you look or concentrate at one point on the image ,maybe in center you can see a logical not of the image (i.e) White pixels will be black and black pixels will be white.

The most interesting thing is, you can try with your own photo.

MATLAB CODE:


A=imread('illusion.jpg');


B=uint8(zeros(size(A)));
A=~im2bw(A);
Logical Not on Binary Image

for i=1:size(A,1)
    for j=1:size(A,2)
        if(A(i,j)==1)
            B(i,j,:)=255;
        end
    end
end

Stare at the dots on image for 20 to 30 secs. Close your eyes or look up towards the ceiling.
You can see a binary image. i.e im2bw(A);

To draw the dots on the image:

C=uint8(ones(4 ,4, 3));
C(:,:,1)=C(:,:,1)*200;
C(:,:,2)=C(:,:,2)*0;
C(:,:,3)=C(:,:,3)*250;
%Find the mid point of the image and draw 3 dots.


midx=round(size(B,1)/2);
midy=round(size(B,2)/2)+30;
for i=1:size(C,1)
    for j=1:size(C,2)
B(midx+i+5,midy+j,:)=C(i,j,:);
B(midx+i-5,midy+j,:)=C(i,j,:);
B(midx+i+15,midy+j,:)=C(i,j,:);
    end
end

















Check this Illusion also:I cant sleep Illusion
Check this link for more optical Illusion Images: Images from Blog


like button Like "IMAGE PROCESSING" page

Darker Edges


Captured Image

Last week my friend was in need of her signature in digital format. Fortunately, it was not for any official purpose. So we captured the signature using the camera and used it.

The image that we acquired using the camera was not that much good. So we processed the image and then included in the document.

After this thing happened, I thought of trying the image with MATLAB.
First I adjusted the image intensity using the imadjust function . 
The syntax for the imadjust for rgb image is
imadjust(RGB,[Low_R Low_G Low_B; High_R High G High B],[]);
The Low values should always be lower than High values.
The range of these values between 0 to 1.
After Imadjust

Then I detected the edge of the image. Then to enlarge the image parts I dilated it. Use an appropriate structure element. Here I used 'disk'.
After that, using labeling method, I labeled all the connected components. Based on the size of the components the components where finally used and components whose size are less are ignored.
Edge detected Image

MATLAB CODE:



function my_edge
global filename A I ;
scz=get(0,'ScreenSize');
figure('Position',[round(scz(1,3)/4) round(scz(1,4)/8) 700 500],'MenuBar','None','NumberTitle','off','Name','Pencil sketch Application','Resize','off');
axes('Position',[0 0 .7 1],'xtick',[],'ytick',[]);
Low=uicontrol('Style','slider','Position',[500,280 200 20],'Max',0.99 ,'Min',0,'Value',0.0,'SliderStep',[0.05,0.1],'Callback',@draw);
High=uicontrol('Style','slider','Position',[500,370 200 20],'Max',1,'Min',0.1,'Value',.5,'SliderStep',[0.05,0.1],'Callback',@draw);
uicontrol('Style','pushbutton','String','Done','Position',[500 200 40 20],'Callback',@pushme);
directory=dir('*.jpg');
files={directory.name}';
uicontrol('style','text','Position',[500,310 100 20]','String','Low:');
uicontrol('style','text','Position',[500,395 100 20]','String','High :');
uicontrol('style','text','Position',[500,455 100 20]','String','Filename:');
uicontrol('Style','popupmenu','position',[500 420 160 30],'Value',1,'String',files,'Callback',@displayfile);
    function displayfile(obj,eve)
        ptr=get(obj,'value');
        filename=char(files(ptr));
        A=imread(filename);
        A=imresize(A,0.4);
        subplot('Position',[0.05 0.1 .6 .9]);imshow(A);
    end
    function draw(obj,eve)
        H=get(High,'Value');
        L=get(Low,'Value');
      uicontrol('Style','edit','position',[500 250 50 20],'String',L);
      uicontrol('Style','edit','position',[500 340 50 20],'String',H);
        if( L < H )
            %The intensity values for each R,G,B planes are adjusted.
            I=imadjust(A,[L L L; H H H],[]);
        end
           subplot('Position',[0.05 0.1 .6 .9]);imshow(I);
       end
                                                                                                         
                                                                                        
                                                                                         
                                                                                   
                                                                                    
    function pushme(obj,eve)
        myedges(I);
    end
    function myedges(A)
      
A1=rgb2gray(A);
B=(edge(A(:,:,1))|edge(A(:,:,2))|edge(A(:,:,3)));

Edge detected




SE=strel('disk',3);
C=~(imdilate(B,SE));
target=(ones([size(A1,1) size(A1,2)] ));
[BW,label]=bwlabel(~C,8);
for l=1:max(max(label))
[row, col] = find(BW==l);
if(size(row,1)>30)
for i=1:size(row,1)
    x=row(i,1);
    y=col(i,1);
    target(x,y)=C(x,y);
end
end
end


subplot('Position',[0 0.5 .8 .45]);imshow(A);title('Original Image');
subplot('Position',[0 0   .8 .45]);imshow(target);title('Final Image');
    end
end


Another example:

After Imadjust and edge detection (structuring element:disk Radius=1)


like button Like "IMAGE PROCESSING" page

Mean, Median , Variance, Standard deviation and Mode


A=[10 10 20 40 60; 12 1 2 3 4; 7 8 9 11 4 ; 3 4 5 9 10];

A =

    10    10    20    40    60
    12     1     2     3     4
     7     8     9    11     4
     3     4     5     9    10

%MATLAB code to find the mean, median, variance, standard deviation and mode for an image
%A=imread('pout.tif');
%Convert the image to type ‘double’.
%A=double(A);


[r,c]=size(A);

% MEAN:
 The average of sum of all the values in the matrix.
%To find the mean for each column
colmean=sum(A)/r;
display(colmean);


%To calculate the mean of the matrix
totmean=sum(A(:))/(r*c);
display(totmean);


%To calculate the variance and standard-deviation column-wise
myvar=zeros([c,1]);
mystd=zeros([c,1]);
for i = 1: c
    diff=A(:,i)-colmean(i);
    myvar(i)=sum(diff.^2)/(r-1);
    mystd(i)=sqrt(myvar(i));
end

display(myvar);
display(mystd);





%To calculate the variance and standard deviation

totdiff=(A-totmean).^2;
totsum=sum(totdiff(:));
nele=(r*c)-1;
totvar=totsum/nele;
display(totvar);
totstd=sqrt(totvar);
display(totstd);










%MEDIAN

 %To find the median of the matrix row-wise
 n=r/2;
 B=sort(A,1);
 if(mod(r,2)==0)
      rowmedian=(B(round(n),:)+B(round(n)+1,:))/2;
 else
     rowmedian=B(round(n),:);
 end
 display(rowmedian);

 %To find the median of the matrix column-wise
 n=c/2;
 B=sort(A,2);
 if(mod(c,2)==0)

     colmedian=(B(:,round(n))+B(:,round(n)+1))/2;
 else
     colmedian=B(:,round(n));
 end
 display(colmedian);




























%To find the total median of the image
 C=reshape(A,[],1);
 min1=min(C);
 max1=max(C);

 E=sort(A(:));
 num=round((r*c)/2);

 if( (mod(r,2)==0) || (mod(c,2)==0) )
     totmedian=(E(num)+E(num+1))/2;
    
 else
     totmedian=E(num);
 end
 display(totmedian);



    
%To find the mode of the matrix
   D=hist(C,min1:max1);
   D1=find(D==max(D));
   mymode=D1(1)+min1-1;
   display(mymode);
 






like button Like "IMAGE PROCESSING" page
Previous Post Next Post Home
Google ping Hypersmash.com