/ Forside / Karriere / Uddannelse / Højere uddannelser / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Højere uddannelser
#NavnPoint
Nordsted1 1588
erling_l 1224
ans 1150
dova 895
gert_h 800
molokyle 661
berpox 610
creamygirl 610
3773 570
10  jomfruane 570
diskret cosinus transformation
Fra : desilva


Dato : 11-02-04 11:37

Jeg sidder og leger med kompression af grafik og har i den forbindelse
implementeret en DCT af en 2d matrise.
Det er dog et nyt område for mig, så jeg er lidt i tvivl om hvorvidt mine
resultater er korrekte.

Første eksempel er en 8*8 matrise med værdien 150 i samtlige positioner.
Jeg får der en magnitude på 1200 for 0,0 frekvensen.. (dc altså) og meget
lave nær nul for andre frekvenser. Det virker korrekt, da der jo ikke er
andre frekvenser. Jeg forventer at de andre frekvenser kun er forskellig fra
nul på grund af afrundingsfejl.
Jeg ville dog gerne dele de 1200 med 8 for at få 150, som er den reele værdi
i inddata, men det ser jeg ikke i formelen berettigelse for. Hvorfor ender
jeg med 1200 istedet for 150? Jeg mener ikke der er fejl i implementationen,
men hvis der ikke er noget umidelbart svar, som i andre kender, så er det
måske der den er gal alligevel.

Anden test er matrisen fyld med ens rækker alle med værdien
150, 0, 0, 0, 0, 0, 150, 0
Dette giver nulfrekvenser for alt andet end første række hvor jeg får
300,31,277,217,0,325,0,159

Det synes jeg dog ikke giver mening. Der burde vel ingen dc være da data
ikke ser ud til at have en konstant komponent andet end nul.
At der er en værdi for søjle 5 på 325 skal vel tolkes som at der er er et
"signal" med bølgelængde på 5? Der er dog ingen med hverken frekvens eller
bølgelængde svarende til de andre søjler.

Ser mine data korrekte ud og kan jeg bare ikek finde ud af at tolke dem,
eller er de helt hen i skoven?



 
 
Glenn Møller Holst (11-02-2004)
Kommentar
Fra : Glenn Møller Holst


Dato : 11-02-04 23:52

desilva wrote:

> Jeg sidder og leger med kompression af grafik og har i den forbindelse
> implementeret en DCT af en 2d matrise.
> Det er dog et nyt område for mig, så jeg er lidt i tvivl om hvorvidt mine
> resultater er korrekte.
>
> Første eksempel er en 8*8 matrise med værdien 150 i samtlige positioner.
> Jeg får der en magnitude på 1200 for 0,0 frekvensen.. (dc altså) og meget
> lave nær nul for andre frekvenser. Det virker korrekt, da der jo ikke er
> andre frekvenser. Jeg forventer at de andre frekvenser kun er forskellig fra
> nul på grund af afrundingsfejl.
> Jeg ville dog gerne dele de 1200 med 8 for at få 150, som er den reele værdi
> i inddata, men det ser jeg ikke i formelen berettigelse for. Hvorfor ender
> jeg med 1200 istedet for 150? Jeg mener ikke der er fejl i implementationen,
> men hvis der ikke er noget umidelbart svar, som i andre kender, så er det
> måske der den er gal alligevel.

De fleste FFT glemmer at gange med konstanten 1/delta_t, det behøver man
dog ikke ved invers-FFT (såvidt jeg husker):

http://mathworld.wolfram.com/FastFourierTransform.html

Se denne kode - søg efter "FourierFFT1Drow":

http://web.archive.org/web/20030504070517/www.dat.ruc.dk/~glenn/grafik/8spec/zMatrix.cp



>
> Anden test er matrisen fyld med ens rækker alle med værdien
> 150, 0, 0, 0, 0, 0, 150, 0

Denne vektors middelværdi(=DC-koeffient*k) > 0.

> Dette giver nulfrekvenser for alt andet end første række hvor jeg får
> 300,31,277,217,0,325,0,159

Jeg har ikke regnet det ud, men to "pinde" med værdien 150 være
sammensat af mange frekvenser incl. DC/ 0 Hz.

En pind ville svare til en delta-funktion som udmærker sig ved at bestå
af "alle" frekvenser:
http://mathworld.wolfram.com/DeltaFunction.html

>
> Det synes jeg dog ikke giver mening. Der burde vel ingen dc være da data
> ikke ser ud til at have en konstant komponent andet end nul.
> At der er en værdi for søjle 5 på 325 skal vel tolkes som at der er er et
> "signal" med bølgelængde på 5? Der er dog ingen med hverken frekvens eller
> bølgelængde svarende til de andre søjler.

Ikke bølgelængde men derimod frekvens. Frekvensens værdi vil afhænge af
diskretiseringsafstanden.

>
> Ser mine data korrekte ud og kan jeg bare ikek finde ud af at tolke dem,
> eller er de helt hen i skoven?
>
>

De kunne godt være OK.

mvh/Glenn



Glenn Møller-Holst (12-02-2004)
Kommentar
Fra : Glenn Møller-Holst


Dato : 12-02-04 17:24

Glenn Møller_Holst wrote:
>
> De fleste FFT glemmer at gange med konstanten 1/delta_t, det behøver man
> dog ikke ved invers-FFT (såvidt jeg husker):
>

Der skulle have stået: "De fleste FFT algoritmer glemmer at gange med
konstanten delta_t".

mvh/Glenn

desilva (12-02-2004)
Kommentar
Fra : desilva


Dato : 12-02-04 18:00

> De fleste FFT glemmer at gange med konstanten 1/delta_t, det behøver man
> dog ikke ved invers-FFT (såvidt jeg husker):

Du skriver FFT. Er DCT bare an afart FT?
Hvad skal 1/delta_t ses som når der ikke er tale om tid, men istedet pixels?
Jeg går ud fra at delta_t er tidsforløbet fra første til sidste sample? I så
fald er 1/delta_t vel 1/8 for min 8*8 matrise?

> > 150, 0, 0, 0, 0, 0, 150, 0
> Denne vektors middelværdi(=DC-koeffient*k) > 0.

Ja? Skal signalets middelværdi være nul?

> Jeg har ikke regnet det ud, men to "pinde" med værdien 150 være
> sammensat af mange frekvenser incl. DC/ 0 Hz.

Der er vist mange ting jeg er uklar på her. Hvordan kan et signal med
frekvensen nul være i stand tilat generere både værdier på 150 og 0? Det
"samplede" signal er jo både 150 og 0.




Søg
Reklame
Statistik
Spørgsmål : 177502
Tips : 31968
Nyheder : 719565
Indlæg : 6408534
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste