1 van 1

Bmp inlezen in matlab.

Geplaatst: zo 09 mar 2008, 18:11
door Bert F
Graag had ik in matlab een bmp bestand ingelezen en de data erin verwerkt. Het inlezen doe ik met imread dit geeft me een array voor elke kleur een een matrix met daarin de waarde van de kleur op de juiste plaats.

Graag had ik nu mijn data als volgt verwerkt

D(1:kol,1:rij)=A(1:rij, 1:kol,1)+A(1:rij, 1:kol,2)*1000+A(1:rij, 1:kol,3)*1000000

Met D een nieuwe matrix.

Probleem is nu dat matlab niet toelaat dat waardes in D groter worden dan 255 Hoe los ik dat op ?

Groeten.

Re: Bmp inlezen in matlab.

Geplaatst: zo 09 mar 2008, 19:11
door Bart
Bij mij werkt het gewoon. Hoe ziet je code eruit en welke error krijg je?

Re: Bmp inlezen in matlab.

Geplaatst: ma 10 mar 2008, 15:29
door Bert F
Het werkt wel maar niet volledig.

Als je namelijk een kleur in je bmp bestand hebt met waarde 255 255 255 dan vraag ik dat in de matrix D volgende komt te staan 255+255*1000+255*1000000

omdat dit groter is dan 255 schrijft hij in matrix D gewoon 255

Neem ik kleuren die niet aanleiding geven tot deze limiet en bijkomend de vermenigvuldiging weg laat dan werkt het.

hoe komt dat?

Groeten.

Re: Bmp inlezen in matlab.

Geplaatst: ma 10 mar 2008, 19:47
door Bart
Ah, ik zie het probleem. De functie 'imread' geeft een matrix van uint8 type mee. Je moet de matrix dus eerst converteren:

Code: Selecteer alles

A = imread('myImage.bmp');

A = uint32(A);

D = A(:,:,1) + A(:,:,2) * 1e3 + A(:,:,3)*1e6;

Re: Bmp inlezen in matlab.

Geplaatst: ma 10 mar 2008, 19:55
door Bert F
Oké bedankt.

Converteert die dat dan niet automatisch? Groeten.

Re: Bmp inlezen in matlab.

Geplaatst: ma 10 mar 2008, 20:04
door Bart
Nee, matlab converteert niet automatisch.

Re: Bmp inlezen in matlab.

Geplaatst: ma 10 mar 2008, 21:18
door Bert F
Oké bedankt voor de hulp.

Re: Bmp inlezen in matlab.

Geplaatst: di 11 mar 2008, 18:30
door Bert F
Als ik nu van de matrix D een histogram (of C ) probeer te maken dan geeft die volgende fout:

Afbeelding

Hoe komt dat? Groeten.

Re: Bmp inlezen in matlab.

Geplaatst: di 11 mar 2008, 21:47
door Bart
Gebruik in plaats van

Code: Selecteer alles

A = uint32(A)
dit:

Code: Selecteer alles

A = double(A)
Ik weet niet of het wel zo'n goed idee is om de functie hist los te laten op zo'n grote matrix. Je kunt namelijk maar weinig informatie uit de grafiek halen.

Re: Bmp inlezen in matlab.

Geplaatst: wo 12 mar 2008, 18:57
door Bert F
Bedankt het werkt, het was gewoon voor een exp. Groeten.