znásobení obrazu matice v Matlabu

I

IndiJones

Guest
Mám 24 bit RGB obrázek (bmp), který má 1024X1280X3 pixelů a je
uint8 typ (MATLAB ukazuje, že při načítání obrázků pomocí 'imread').Já
bych se množit to s 3x3 matice abyste viděli, jak obraz
změny.Když jsem to udělat pomocí následujícího příkazu:

Image2 = Matrix * Image1;

Mám tuto zprávu:

"?? Chyba: ==> mtimes
Celá čísla mohou být kombinovány s celými čísly z téže třídy, nebo
skalární zdvojnásobí. "

Pak jsem převedeny Image1 na dvojí použití:

DoubleImage = imdouble (Image1);

A pak se snažil dělat násobení ještě jednou:

Image2 = Matrix1 * DoubleImage;

Tentokrát jsem dostal tuto chybu:

"?? Chyba: ==> mtimes
Vstupní argumenty musí být 2-D. "

Mohl by někdo prosím, řekněte mi, jak mám dělat násobení
a poté se stanou výstupního obrazu pro prohlížení.

Díky předem!

 
Myslím, že je třeba dalšího objasnění problému.Každý pixel RGB
roviny obrázku má být vynásobí Matrix1.Například,
První pixel z každé ze tří rovin R1, G1 & B1 bude nejprve
vynásobí Matrix1, pak R2, G2 & B2 bude násobí a tak dále.
Tak to by mělo být 3x3 matice vynásobí jiný 3x1 matrice jako
takto:

První pixelů nového image (řekněme 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];

Nakonec výstupního obrazu XYZ bude mít pixel hodnoty X1, .., Xn pro
rovině X, Y1, .., Yn pro letadlo Y a Z1, .., Zn pro letadla Z
a ukazují poslední obrázek.

 
Pokud chápu správně, můžete zkusit filtrovat své původní obrázek
s 3x3 masku?Pokud ano, použijte new_pic (m) = conv2 (maska, your_pic :),:, m))

kde m = 1,2,3 i pro R, G a B

uložit každé 2-D pic (R, G a B) a kombinovat je do 3-D pole.

Hodně štěstí,
P.

 

Welcome to EDABoard.com

Sponsor

Back
Top