Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

What is the problem in my following Code?

Asked by PRIYANGA on 20 Sep 2012

Dear Friends! This is my Thesis Coding. I have to calculate the Mean imamge in two ways. First One is Normal method. Another one is Decoded Mean image calculated Using Fractal values. But I got The Decoded Mean image is very

 im1=imread('D:\lena.jpg');

c = im2uint8(im1);

% figure(1);

% imshow(c);

% title('Image used for training');

gsize=16;

nr=512;

nc=512;

% resize the image

c=imresize(c,[nr,nr]);

nc=nr; R=c(:,:,1);

G=c(:,:,2);

B=c(:,:,3);

% split the image of the range size

k=1; for i1=1:gsize:nr

    for j1=1:gsize:nc
        l=1;
        for x=i1:1:i1+(gsize-1)
            for y=j1:1:j1+(gsize-1)
               rang1r(k,l)=R(x,y); 
               rang1g(k,l)=G(x,y);
               rang1b(k,l)=B(x,y);
               l=l+1;               
            end            
        end 
        drr=double(rang1r(k,:));
        meanranr(k)=mean(drr);
        varranr(k,:)=var(drr);
        drg=double(rang1g(k,:));
        meanrang(k)=mean(drg);
        varrang(k,:)=var(drg);
        drb=double(rang1b(k,:));
        meanranb(k)=mean(drb);
        varranb(k,:)=var(drb);
        k=k+1;
    end
end

rang1=cat(3,rang1r,rang1g,rang1b);

meanran=cat(3,meanranr,meanrang,meanranb);

varran=cat(3,varranr,varrang,varranb);

[nrr1,ncr1]=size(rang1);

% to display the mean image

n=sqrt(nrr1);l=1; for i1=1:1:n

    for j1=1:1:n
        meanimg1r(i1,j1)=meanranr(l);
        meanimg1g(i1,j1)=meanrang(l);
        meanimg1b(i1,j1)=meanranb(l);
        l=l+1;
    end
end

meanimg1=cat(3,meanimg1r,meanimg1g,meanimg1b);

meanimg = uint8(round(meanimg1-1));

figure(3); %

imshow(meanimg);

title('Mean Image of the training'); I got a Good Mean Image

% divide the mean image into blocks km=1; for i1=1:gsize:n

    for j1=1:gsize:n
        l=1;
        for x=i1:1:i1+(gsize-1)
            for y=j1:1:j1+(gsize-1)
               mimageranr(km,l)=meanimg1r(x,y);
               mimagerang(km,l)=meanimg1g(x,y);
               mimageranb(km,l)=meanimg1b(x,y);
               l=l+1;
           end
        end 
        km=km+1;
    end
end

mimageran=cat(3,mimageranr,mimagerang,mimageranb);

gsize1=gsize/2; km=1;

for i1=1:gsize1:n

    for j1=1:gsize1:n
        l=1;
        for x=i1:1:i1+(gsize1-1)
            for y=j1:1:j1+(gsize1-1)
               mimageran1r(km,l)=meanimg1r(x,y);
               mimageran1g(km,l)=meanimg1g(x,y);
               mimageran1b(km,l)=meanimg1b(x,y);
               l=l+1;
            end
        end
        km=km+1;
    end
end

mimageran1=cat(3,mimageran1r,mimageran1g,mimageran1b);

llim=10; if (gsize == 16)

    nvar = 7; nvar1 = 9;

elseif (gsize == 8)

    nvar = 11; nvar1 = 13;

elseif (gsize == 4)

    nvar = 15; nvar1 = 17;

else nvar = 19; end

threshold=10;a=1;e=1;e1=1;b=1;w=1;w1=1;eno=0;

% compute the fractal code for i1=1:1:nrr1

    disp(i1);
    if (varran(i1) < threshold)
        % Code using mean value
        label(i1)=0;
        mgacoder(e)=meanranr(i1);
        mgacodeg(e)=meanrang(i1);
        mgacodeb(e)=meanranb(i1);
        e=e+1;
        mgacode=cat(3,mgacoder,mgacodeg,mgacodeb);
    else
        % code using genetic Algorithm
        label(i1)=1;
        [isomer alphr meanrr dom1r errr]=ga(rang1r(i1,:),mimageranr,nvar,20);
        [isomeg alphg meanrg dom1g errg]=ga(rang1g(i1,:),mimagerang,nvar,20);
        [isomeb alphb meanrb dom1b errb]=ga(rang1b(i1,:),mimageranb,nvar,20);
        err=(errr+errg+errb)/3;
        if (err < llim)
            label1(w)=0;
            gacoder(a,:) = [isomer alphr meanrr dom1r];
            gacodeg(a,:) = [isomeg alphg meanrg dom1g];
            gacodeb(a,:) = [isomeb alphb meanrb dom1b];
            a=a+1;
            gacode=cat(3,gacoder,gacodeg,gacodeb);
        else
            label1(w)=1;
            [rangr]=qtsplit(rang1r(i1,:),gsize1);
            [rangg]=qtsplit(rang1g(i1,:),gsize1);
            [rangb]=qtsplit(rang1b(i1,:),gsize1);
           for x=1:1:4
                drr1=double(rangr(x,:));
                meansrangr(x)=mean(drr1); 
                varsranr(x,:)=var(drr1);
                drg1=double(rangg(x,:));
                meansrangg(x)=mean(drg1); 
                varsrang(x,:)=var(drg1);
                drb1=double(rangb(x,:));
                meansrangb(x)=mean(drb1); 
                varsranb(x,:)=var(drb1);
                rang=cat(3,rangr,rangg,rangb);
                meansrang=cat(3,meansrangr,meansrangg,meansrangb);
                varsran=cat(3,varsranr,varsrang,varsranb);
                if (varsran(x) < threshold/2)
                    lab(w1)=0;
                    mgacode1r(e1)=meansrangr(x);
                    mgacode1g(e1)=meansrangg(x);
                    mgacode1b(e1)=meansrangb(x);
                    e1=e1+1;
                    mgacode1=cat(3,mgacode1r,mgacode1g,mgacode1b);
                else
                    lab(w1)=1;
                    [isomeqr alphqr meanrqr dom2qr errqr] = ga(rangr(x,:),mimageran1r,nvar1,40);
                    [isomeqg alphqg meanrqg dom2qg errqg] = ga(rangg(x,:),mimageran1g,nvar1,40);
                    [isomeqb alphqb meanrqb dom2qb errqb] = ga(rangb(x,:),mimageran1b,nvar1,40);
                    errq=(errqr+errqg+errqb)/3;
                    if (errq > llim)
                        eno=eno+1;
                    end
                    gacode1r(b,:)=[isomeqr,alphqr,meanrqr,dom2qr];
                    gacode1g(b,:)=[isomeqg,alphqg,meanrqg,dom2qg];
                    gacode1b(b,:)=[isomeqb,alphqb,meanrqb,dom2qb];
                    b=b+1;
                    gacode1=cat(3,gacode1r,gacode1g,gacode1b);
                end
                w1=w1+1;
            end
        end
        w=w+1;
    end     
end
eno

%decoding

% compute the mean image and display tic w=1;a=1;b=1;w1=1;w2=1;e=1;e1=1;

for x=1:1:sqrt(nrr1)

    for y=1:1:sqrt(nrr1)
        if (label(w)==0)
            dmimgr(x,y)=mgacoder(e);
            dmimgg(x,y)=mgacodeg(e);
            dmimgb(x,y)=mgacodeb(e);
            e=e+1;
            dmimg=cat(3,dmimgr,dmimgg,dmimgb);
        else 
            if (label1(w1)==0)
                dmimgr(x,y)=gacoder(a,3);
                dmimgg(x,y)=gacodeg(a,3);
                dmimgb(x,y)=gacodeb(a,3);
                a=a+1;
                dmimg=cat(3,dmimgr,dmimgg,dmimgb);
            else
                sumvq=0;sumvqr=0;sumvqg=0;sumvqb=0;
                for i=1:4
                    if (lab(w2)==0)
                        sumvqr=sumvqr+mgacode1r(e1);
                        sumvqg=sumvqg+mgacode1g(e1);
                        sumvqb=sumvqb+mgacode1b(e1);
                        e1=e1+1;
                        sumvq=cat(3,sumvqr,sumvqg,sumvqb);
                    else
                        sumvqr=sumvqr+gacode1r(b,3);
                        sumvqg=sumvqg+gacode1g(b,3);
                        sumvqb=sumvqb+gacode1b(b,3);
                        b=b+1;
                        sumvq=cat(3,sumvqr,sumvqg,sumvqb);
                    end
                    w2=w2+1;
                end
                dmimg=sumvq/4;
            end
            w1=w1+1;  
        end
        w=w+1; 
    end  

end

cimage = uint8(round(dmimg - 1));

figure(4);

imshow(cimage);

title('Decoded Mena image'); % I am not get properDecoded Mean Image

2 Comments

José-Luis on 20 Sep 2012

You realize you did not ask a question? And that we don't have your image lena.jpg? Also it would help if you edited your code and posted a minimum working example. It would take a better soul than mine to read all your code.

Jan Simon on 20 Sep 2012

Please format the code properly. You find enough corresponding instructions in the forum. Then explain the actual problem. "But I got The Decoded Mean image is very" and "I am not get properDecoded Mean Image" does not allow to give instructions for a solution.

PRIYANGA

Products

No products are associated with this question.

0 Answers

Contact us