Multipliserer du et bilde med en matrise i Matlab

I

IndiJones

Guest
Jeg har en 24 bit RGB-bilde (bmp) som har 1024X1280X3 piksler og er av
uint8 type (matlab viser det når du legger bildet ved hjelp av 'imread').Jeg
ønsker å multiplisere den med en 3X3 matrise for å se hvordan bildet
endringer.Når jeg gjør det med følgende kommando:

Image2 = Matrix * image1;

Jeg får denne meldingen:

"?? Feil: ==> mtimes
Tall kan bare kombineres med heltall av samme klasse, eller
skalar doubles ".

Da jeg konverterte image1 til dobbel hjelp:

DoubleImage = imdouble (image1);

Og så prøvde å gjøre multiplikasjonen igjen:

Image2 = Matrix1 * DoubleImage;

Denne gangen fikk jeg denne feilmeldingen:

"?? Feil: ==> mtimes
Argumenter må være 2-D.

Kunne noen behage fortelle meg hvor jeg skal gjøre multiplikasjonen
og deretter danner utgang bildet for visning.

Takk på forhånd!

 
Jeg tror jeg må videre avklare problemet.Hver piksel i det RGB
fly av bildet må multipliseres med Matrix1.For eksempel
den første piksel i hver av de tre flyene R1, G1 & B1 vil først bli
multiplisert med Matrix1, da R2, G2 og B2 vil bli multiplisert og så videre.
Så det bør være en 3X3 matrise multiplisert med en 3x1 matrise som
følger:

Den første piksler på det nye bildet (si XYZ)

[X1 Y1 Z1] = [M11 M12 M13, M21 M22 M23, M31 M32 M33] * [R1 G1 B1];
.
.
.
[Xn yn Zn] = [M11 M12 M13, M21 M22 M23, M31 M32 M33] * [Rn Gn Bn];

Endelig produksjon image XYZ vil ha piksel verdiene X1, .., Xn for
X-plane, Y1, .., yn for Y flyet og Z1, .., Zn for Z flyet
og vis det endelige bildet.

 
Hvis jeg forstår riktig, kan du forsøke å filtrere opprinnelige bildet
med 3X3 en maske?I så fall bruke new_pic (m) = conv2 (maske, your_pic :),:, m))

der m = 1,2,3 som for R, G og B

lagre hver 2-D pic (R, G og B) og kombinere dem til en 3-D array.

Lykke til,
P.

 

Welcome to EDABoard.com

Sponsor

Back
Top