Bonjour,
Si vous pouvez m'aider je veux un programme en vhdl qui sert à compresser (coder) une image en norme jpeg2000
et merci d'avance !!
-----
Bonjour,
Si vous pouvez m'aider je veux un programme en vhdl qui sert à compresser (coder) une image en norme jpeg2000
et merci d'avance !!
en faite je n'arrive pas à introduire une matrice de pixels de l'image en vhdl
comment faire ?!!!
En faite,je n'arrive pas à introduire une matrice de pixels de l'image à compresser, comment faire SVP ?!!
Bonsoir,
il faut déclarer un type qui soit une array;
type component : std_logic_vector(7 downto 0);--pour un codage 8 bit
type pixel is array(0 to 2) of component;--codage RGB
type pixel_line is array (0 to line_size-1) of pixel;
type line_array is array (0 to frame_size-1) of pixel_line;
image : line_array;
line_size : nombre de pixel en horizontal par ex en XGA : 1024
frame_size : nombre de ligne de l'image par ex en XGA : 768
le résultat est un tableau à 3 dimensions dont chaque élément est indexable par:
current_pixel : line_array(y)(x)
current_pixel est de type pixel
current_pixel_component_red <= line_array(y)(x)(0);
current_pixel_component_red est de type component.
current_pixel_component_green <= line_array(y)(x)(1);
current_pixel_component_blue<= line_array(y)(x)(2);
on peut aussi utiliser un record pour définir le pixel, ici en RGB 565
type Pixel is
record
red : std_logic_vector(4 downto 0);
green : std_logic_vector(6 downto 0);
blue : std_logic_vector(4 downto 0);
end record;
type pixel_line is array (0 to line_size-1) of pixel;
type line_array is array (0 to frame_size-1) of pixel_line;
image : line_array;
dans ce cas, analogue à une structure en C, on peut indexer en écrivant:
current_pixel_component_red <= line_array(y)(x).red;
current_pixel_component_red est de type std_logic_vector(4 downto 0)
current_pixel_component_green <= line_array(y)(x).green;
current_pixel_component_blue <= line_array(y)(x).blue;
ce n'est pas intéressant d'utiliser des "records" pour décrire les lignes et la trame.
Bien sur il faudra copier l'image à traiter dans l'array comme l'entrée sera sans doute la sortie d'un codeur AD reçue sous forme de std_logic_vector il faudra faire une moulinette ad hoc.
vu l'heure j'espère ne pas avoir commis de fautes de syntaxe
JR
l'électronique c'est pas du vaudou!
bonsoir,
merci bien pour votre réponse ça m'a vraiment dirigé c'est intéréssant, mais je me demande, par ce que on est habitué à coder chaque pixel sur 8 bits (entre 0 et 256), pourquoi dans l'utilisation de record vous avez choisi des vecteurs de longueurs différentes et précises:
red : std_logic_vector(4 downto 0);
green : std_logic_vector(6 downto 0);
blue : std_logic_vector(4 downto 0);
et pas tous de meme longueur 8 bits comme pour ce que vous avez écrit dans le haut du programme:
type component : std_logic_vector(7 downto 0);
.
.
.
current_pixel_component_red est de type component.
??
Bonsoir,
j'ai choisi cet exemple pour illustrer l'usage de records qui peuvent réunir des objets hétéroclites.
JR
l'électronique c'est pas du vaudou!
bonsoir,
oui d'accord merci
Bonjour,
en fait j'ai un probleme un peu similaire... je suis sur un projet ou je dois récupérer des donnees d'une caméra ( qui utilise un capteur CMOS) et les envoyer à une mémoire.. mon soucis c est comment faire ca en vhdl?? est ce que je dois créer un matrice à partir des données que je récupere et envoyer pixel par pixel?? ( javoue que je suis un peu perdue! :s)
c est encore moi...
alors j ai écrit un code pour créer une matrice à partir des données que je reçois mais j'ai une erreur que j'arrive pas à comprendre:
voici mon code:
entity create_matrice is
Port ( clk : in STD_LOGIC;
create : in STD_LOGIC;
y : in STD_LOGIC_VECTOR (7 downto 0));
end create_matrice;
architecture Behavioral of creation_matrice is
type matrice is array (0 to 1279, 0 to 1023 ) of std_logic_vector(7 downto 0);--(matrice 1280*1024)
signal data: matrice;
begin
process(clk)
begin
if create='1' then
if (clk'event AND clk='1') then
for i in 0 to 1279 loop
for j in 0 to 1023 loop
data(i,j)<=y; --ligne 53
end loop;
end loop;
end if;
end if;
end process;
end Behavioral;
l'ereure est la suivante: Line 53. Width mismatch. Expected width 8, Actual width is 25 for dimension 1 of y.
je comprend pas du tt!!!!
Bonsoir,
si le code précédent est bien la copie exacte de celui que tus compiles alors cela serait bien que l'architecture et l'entité portent le même nom.
JR
l'électronique c'est pas du vaudou!
oops! javai changé le nom de lentité et jai oublié d'en faire de meme pour l'architecture!!
merci!!
Bonjour,
De mçeme Je cherche un code VHDL permettant la compression d'une image en JPEG2000. Si vous en avez trouver un merci de m'aider SVP.
Merci.
Bonjour,
Pareil, je cherche une implementation VHDL de JPEG2000. Merci
Bonsoir,
le site de référence pour les projets de ce type c'est opencores.org.
http://www.opencores.org/?do=project&who=mkjpeg
JR
l'électronique c'est pas du vaudou!
Merci, mais il y a pas de JPEG 2000 dans ce site, que de JPEG.Bonsoir,
le site de référence pour les projets de ce type c'est opencores.org.
http://www.opencores.org/?do=project&who=mkjpeg
JR
l'électronique c'est pas du vaudou!