Bmp inlezen in matlab.

Moderators: jkien, Xilvo

Reageer
Berichten: 2.589

Bmp inlezen in matlab.

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.

Gebruikersavatar
Berichten: 7.224

Re: Bmp inlezen in matlab.

Bij mij werkt het gewoon. Hoe ziet je code eruit en welke error krijg je?
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

Berichten: 2.589

Re: Bmp inlezen in matlab.

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.

Gebruikersavatar
Berichten: 7.224

Re: Bmp inlezen in matlab.

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;
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

Berichten: 2.589

Re: Bmp inlezen in matlab.

Oké bedankt.

Converteert die dat dan niet automatisch? Groeten.

Gebruikersavatar
Berichten: 7.224

Re: Bmp inlezen in matlab.

Nee, matlab converteert niet automatisch.
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

Berichten: 2.589

Re: Bmp inlezen in matlab.

Oké bedankt voor de hulp.

Berichten: 2.589

Re: Bmp inlezen in matlab.

Als ik nu van de matrix D een histogram (of C ) probeer te maken dan geeft die volgende fout:

Afbeelding

Hoe komt dat? Groeten.

Gebruikersavatar
Berichten: 7.224

Re: Bmp inlezen in matlab.

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.
If I have seen further it is by standing on the shoulders of giants.-- Isaac Newton

Berichten: 2.589

Re: Bmp inlezen in matlab.

Bedankt het werkt, het was gewoon voor een exp. Groeten.

Reageer