Bmp inlezen in matlab.
-
- 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.
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.
- 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.
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.
- 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.
Converteert die dat dan niet automatisch? Groeten.
- 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.
Als ik nu van de matrix D een histogram (of C ) probeer te maken dan geeft die volgende fout:
Hoe komt dat? Groeten.
Hoe komt dat? Groeten.
- Berichten: 7.224
Re: Bmp inlezen in matlab.
Gebruik in plaats van
dit:
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.
Code: Selecteer alles
A = uint32(A)
Code: Selecteer alles
A = double(A)
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.