Pages: [1]   Go Down
Print
Author Topic: piani d bit  (Read 1644 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
rox
Forumista
***
Offline Offline

Posts: 633


« 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.
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
andreacannella
Administrator
Forumista Esperto
*****
Offline Offline

Gender: Male
Posts: 1.488


Andea Cannella - www.andreacannella.com


WWW
« Reply #1 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

Logged

Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall)

Good times for a change
See, the luck I've had
Can make a good man
Turn bad

So please, please, please
Let me, let me, let me
Let me get what I want
This time

The Smiths
rox
Forumista
***
Offline Offline

Posts: 633


« Reply #2 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...
Logged

Una macchina è in grado di lavorare come cinquanta uomini comuni, ma nessuna macchina può svolgere il lavoro di un uomo straordinario.
andreacannella
Administrator
Forumista Esperto
*****
Offline Offline

Gender: Male
Posts: 1.488


Andea Cannella - www.andreacannella.com


WWW
« Reply #3 on: 26-11-2009, 01:28:39 »

grazie andrea ora mi funziona!!

Figurati  ok

Saluti

 ciao ciao

Andrea
Logged

Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall)

Good times for a change
See, the luck I've had
Can make a good man
Turn bad

So please, please, please
Let me, let me, let me
Let me get what I want
This time

The Smiths
strikajici_fx
Apprendista Forumista
**
Offline Offline

Posts: 199


« Reply #4 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 




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 
Logged
strikajici_fx
Apprendista Forumista
**
Offline Offline

Posts: 199


« Reply #5 on: 26-11-2009, 17:41:25 »

 
le matrici vanno da cifre meno significative a cifre più significative
Logged
andreacannella
Administrator
Forumista Esperto
*****
Offline Offline

Gender: Male
Posts: 1.488


Andea Cannella - www.andreacannella.com


WWW
« Reply #6 on: 27-11-2009, 01:43:45 »

www.it-opensolutions.it/software/bitplan.zip

Trovate a quell'indirizzo il mio script :-)

Saluti

 ciao ciao

Andrea
Logged

Le tre grandi virtù di un programmatore: pigrizia, impazienza e arroganza. (Larry Wall)

Good times for a change
See, the luck I've had
Can make a good man
Turn bad

So please, please, please
Let me, let me, let me
Let me get what I want
This time

The Smiths
Pages: [1]   Go Up
Print
Jump to: