Forum Informatica Unict

LAUREA TRIENNALE (D.M. 270/04) => Interazione e Multimedia, 9 CFU => Topic started by: rox on 25-11-2009, 19:23:23



Title: piani d bit
Post by: rox on 25-11-2009, 19:23:23
ragazzi ho provato a fare ciò che ha detto il prof stamane,ovvero a visualizzare le immagini dei vari piani d bit ma mi da alcuni errori.Potreste controllare dove sbaglio?
Code:
function [b c d e f g h l]=piani_d_bit(a)
[m n]=size(a);
for(i=1:m)
    for(j=1:n)
        bin=dec2bin(a(i,j),8);
        b(i,j)=bin(1);
        c(i,j)=bin(2);
        d(i,j)=bin(3);
        e(i,j)=bin(4);
        f(i,j)=bin(5);
        g(i,j)=bin(6);
        h(i,j)=bin(7);
        l(i,j)=bin(8);
    end
end
figure,imshow(b,[]),title('bit + significativo');
figure,imshow(c,[]),title('secondo bit');
figure,imshow(d,[]),title('terzo bit');
figure,imshow(e,[]),title('quarto bit');
figure,imshow(f,[]),title('quinto bit');
figure,imshow(g,[]),title('sesto bit');
figure,imshow(h,[]),title('settimo bit');
figure,imshow(l,[]),title('bit meno significativo');
end
grazie per le eventuali risposte.


Title: Re:piani d bit
Post by: andreacannella on 25-11-2009, 20:51:07
Anziché usare la funzione "dec2bin" usa la funzione "de2bi".

La differenza sta nel fatto che la dec2bin trasforma un numero decimale in una stringa binaria, il de2bi invece trasforma il numero decimale in un array di binari.

Saluti

 :-ciao :-ciao


Andrea



Title: Re:piani d bit
Post by: rox on 26-11-2009, 00:52:11
grazie andrea ora mi funziona!!ecco il codice
Code:
function [b c d e f g h l]=piani_d_bit(a)
[m n]=size(a);
for(i=1:m)
    for(j=1:n)
        bin=de2bi(a(i,j),8,'left-msb');
        b(i,j)=bin(1);
        c(i,j)=bin(2);
        d(i,j)=bin(3);
        e(i,j)=bin(4);
        f(i,j)=bin(5);
        g(i,j)=bin(6);
        h(i,j)=bin(7);
        l(i,j)=bin(8);
    end
end
figure,imshow(b,[]),title('bit + significativo');
figure,imshow(c,[]),title('secondo bit');
figure,imshow(d,[]),title('terzo bit');
figure,imshow(e,[]),title('quarto bit');
figure,imshow(f,[]),title('quinto bit');
figure,imshow(g,[]),title('sesto bit');
figure,imshow(h,[]),title('settimo bit');
figure,imshow(l,[]),title('bit meno significativo');
end
P.S.mettete l'immagine + piccola che avete o vi si impallerà il com!!io ho messo una immagine 1200*1200 e dopo 15 min ancora aspettavo!!Appena ho messo una immagine 120*140,il codice è stato eseguito abb velocemente!!Certo che se ci pensate la complessità è moolto elevata !aldilà dei cicli for c sono molti assegnamenti da far eper ogni numero dunque...


Title: Re:piani d bit
Post by: andreacannella on 26-11-2009, 01:28:39
grazie andrea ora mi funziona!!

Figurati  :-OK

Saluti

 :-ciao :-ciao

Andrea


Title: Re:piani d bit
Post by: strikajici_fx on 26-11-2009, 17:39:58
Questo è il mio!!! di funzionare funonzia!!! XD.... PS: nella prima parte non conoscevo la funzione de2bi  :boh, quindi me la sono creata io  .whistling




clear all
close all
I=double(rgb2gray(imread('3-29.jpg')));
I=imresize(I,0.5,'bicubic');

for i=1:size(I,1)
    for j=1:size(I,2)
        num=I(i,j);
        if num>=1
             num=num/2;
            Y1(i,j)=mod(num,2);
        end
        if num>=1
            num=num/2;
            Y2(i,j)=mod(num,2);
        end
        if num>=1
            num=num/2;
            Y3(i,j)=mod(num,2);
        end
        if num>=1
            num=num/2;
            Y4(i,j)=mod(num,2);
        end
        if num>=1
            num=num/2;
            Y5(i,j)=mod(num,2);
        end
        if num>=1
            num=num/2;
            Y6(i,j)=mod(num,2);
        end
        if num>=1
            num=num/2;
            Y7(i,j)=mod(num,2);
        end
        if num>=1
            num=num/2;
            Y8(i,j)=mod(num,2);
        end
    end
end

figure, imshow(Y1,[]),title('Y1')
figure, imshow(Y2,[]),title('Y2')
figure, imshow(Y3,[]),title('Y3')
figure, imshow(Y4,[]),title('Y4')
figure, imshow(Y5,[]),title('Y5')
figure, imshow(Y6,[]),title('Y6')
figure, imshow(Y7,[]),title('Y7')
figure, imshow(Y8,[]),title('Y8')

for i=1:size(Y7,1)
    for j=1:size(Y7,2)
       Y1(i,j)=1;
    end
end

figure, imshow(Y7)

for i=1:size(Y7,1)
    for j=1:size(Y7,2)
        A=[Y1(i,j);Y2(i,j);Y3(i,j);Y4(i,j);Y5(i,j);Y6(i,j);Y7(i,j);Y8(i,j)]';
        A=uint8(A);
        for z=1:size(A,2)
            if A(z)>=2
                A(z)=1;
            end
        end
        Z(i,j)=bi2de(A);
    end
end

figure, imshow(Z,[0 255])



Buon lavoro  .ciaociao


Title: Re:piani d bit
Post by: strikajici_fx on 26-11-2009, 17:41:25
 .quoto
le matrici vanno da cifre meno significative a cifre più significative


Title: Re:piani d bit
Post by: andreacannella on 27-11-2009, 01:43:45
www.it-opensolutions.it/software/bitplan.zip (http://www.it-opensolutions.it/software/bitplan.zip)

Trovate a quell'indirizzo il mio script :-)

Saluti

 :-ciao :-ciao

Andrea