Teknik som representerar data som summor av cosinusfunktioner
En diskret cosinustransform ( DCT ) uttrycker en ändlig sekvens av datapunkter i termer av en summa av cosinusfunktioner som oscillerar vid olika frekvenser . DCT, som först föreslogs av Nasir Ahmed 1972, är en mycket använd transformationsteknik inom signalbehandling och datakomprimering . Den används i de flesta digitala medier , inklusive digitala bilder (som JPEG och HEIF , där små högfrekventa komponenter kan kasseras), digital video (som MPEG och H.26x ), digitalt ljud (som Dolby Digital , MP3 och AAC ), digital-tv (såsom SDTV , HDTV och VOD ), digital radio (såsom AAC+ och DAB+ ) och talkodning (såsom AAC-LD , Siren och Opus ). DCT är också viktiga för många andra tillämpningar inom vetenskap och teknik , såsom digital signalbehandling , telekommunikationsanordningar , minskad nätverksbandbreddanvändning och spektralmetoder för numerisk lösning av partiella differentialekvationer .
Användningen av cosinus snarare än sinusfunktioner är avgörande för komprimering, eftersom det visar sig (som beskrivs nedan) att färre cosinusfunktioner behövs för att approximera en typisk signal , medan cosinus uttrycker ett särskilt val av gränsvillkor för differentialekvationer . I synnerhet är en DCT en Fourier-relaterad transform som liknar den diskreta Fourier-transformen (DFT), men använder endast reella tal . DCT: erna är i allmänhet relaterade till Fourier Series -koefficienter för en periodiskt och symmetriskt utökad sekvens medan DFTs är relaterade till Fourier Series -koefficienter med endast periodiskt förlängda sekvenser. DCT: er motsvarar DFT: er med ungefär dubbelt så lång längd, som fungerar på verkliga data med jämn symmetri (eftersom Fourier -transformationen av en verklig och jämn funktion är verklig och jämn), medan i vissa varianter skiftas in- och/eller utdata med hälften ett prov. Det finns åtta vanliga DCT -varianter, varav fyra är vanliga.
Den vanligaste varianten av diskret cosinustransform är typ II DCT, som ofta kallas helt enkelt "DCT". Detta var den ursprungliga DCT som först föreslogs av Ahmed. Dess omvända, typ III-DCT, kallas på motsvarande sätt ofta helt enkelt "den inversa DCT" eller "IDCT". Två relaterade transformationer är den diskreta sinustransformen (DST), som motsvarar en DFT av verkliga och udda funktioner, och den modifierade diskreta kosinustransformen (MDCT), som är baserad på en DCT med överlappande data. Flerdimensionella DCT (MD DCT) är utvecklade för att utvidga konceptet DCT till MD -signaler. Det finns flera algoritmer för att beräkna MD DCT. En mängd snabba algoritmer har utvecklats för att minska beräkningskomplexiteten vid implementering av DCT. En av dessa är heltalet DCT (IntDCT), ett heltal approximation av standard DCT, som används i flera ISO/IEC och ITU-T internationella standarder.
DCT -komprimering, även känd som blockkomprimering, komprimerar data i uppsättningar av diskreta DCT -block. DCT -block kan ha ett antal storlekar, inklusive 8x8 pixlar för standard DCT, och varierade heltal DCT -storlekar mellan 4x4 och 32x32 pixlar. DCT har en stark "energipackning" -egenskap som kan uppnå hög kvalitet vid höga datakomprimeringsförhållanden . Emellertid kan blockiga komprimeringsartefakter visas när tung DCT -komprimering appliceras.
Historia
Nasir Ahmed , uppfinnaren av den diskreta cosinustransformen (DCT), som han först föreslog 1972.
Den diskreta cosinustransformen (DCT) var först tänkt av Nasir Ahmed , medan han arbetade vid Kansas State University , och han föreslog konceptet till National Science Foundation 1972. Han avsåg ursprungligen DCT för bildkomprimering . Ahmed utvecklade en praktisk DCT -algoritm med sin doktorand T. Natarajan och vännen KR Rao vid University of Texas i Arlington 1973, och de fann att det var den mest effektiva algoritmen för bildkomprimering. De presenterade sina resultat i ett papper från januari 1974 med titeln "Discrete Cosine Transform". Den beskrev vad som nu kallas typ-II DCT (DCT-II), liksom typ-III invers DCT (IDCT). Det var en riktmärkepublikation och har nämnts som en grundläggande utveckling i tusentals verk sedan publiceringen. Det grundläggande forskningsarbetet och händelser som ledde till utvecklingen av DCT sammanfattades i en senare publikation av Ahmed, "How I Came Up with the Discrete Cosine Transform".
Sedan introduktionen 1974 har det gjorts betydande forskning om DCT. År 1977 publicerade Wen-Hsiung Chen ett papper med C. Harrison Smith och Stanley C. Fralick som presenterade en snabb DCT-algoritm, och han grundade Compression Labs för att kommersialisera DCT-teknik. Ytterligare utveckling inkluderar ett papper från 1978 av MJ Narasimha och AM Peterson, och ett papper från 1984 av BG Lee. Dessa forskningsartiklar, tillsammans med det ursprungliga 1974 års Ahmed -papper och 1977 års Chen -papper, citerades av Joint Photographic Experts Group som grunden för JPEG : s förlorade bildkomprimeringsalgoritm 1992.
I 1975, John A. Röse och Guner S. Robinson anpassat DCT för inter-frame rörelsekompenserade videokodning . De experimenterade med DCT och den snabba Fourier-transformen (FFT), utvecklade inter-frame hybridkodare för båda och fann att DCT är den mest effektiva på grund av dess minskade komplexitet, som kan komprimera bilddata ner till 0,25- bitar per pixel för en videotelefonscene med bildkvalitet som kan jämföras med en inomramskodare som kräver 2-bitar per pixel. DCT tillämpades på videokodning av Wen-Hsiung Chen, som utvecklade en snabb DCT-algoritm med CH Smith och SC Fralick 1977, och grundade Compression Labs för att kommersialisera DCT-teknik. År 1979 vidareutvecklade Anil K. Jain och Jaswant R. Jain rörelsekompenserad DCT-videokompression, även kallad blockrörelsekompensation. Detta ledde till att Chen utvecklade en praktisk videokomprimeringsalgoritm, kallad rörelsekompenserad DCT eller adaptiv scenkodning, 1981. Rörelsekompenserad DCT blev senare standardkodningsteknik för videokomprimering från slutet av 1980-talet och framåt.
Heltalet DCT används i Advanced Video Coding (AVC), som introducerades 2003, och High Efficiency Video Coding (HEVC), som introducerades 2013. Heltalet DCT används också i High Efficiency Image Format (HEIF), som använder en delmängd av HEVC -videokodningsformatet för kodning av stillbilder.
En DCT -variant, den modifierade diskreta cosinustransformen (MDCT), utvecklades av John P. Princen, AW Johnson och Alan B. Bradley vid University of Surrey 1987, efter tidigare arbete av Princen och Bradley 1986. MDCT används i de flesta moderna ljudkomprimeringsformat , till exempel Dolby Digital (AC-3), MP3 (som använder en hybrid DCT- FFT- algoritm), Advanced Audio Coding (AAC) och Vorbis ( Ogg ).
Den diskreta sinustransformen (DST) härleddes från DCT genom att ersätta Neumann -tillståndet vid x = 0 med ett Dirichlet -tillstånd . DST beskrevs i 1974 års DCT -tidning av Ahmed, Natarajan och Rao. En typ-I DST (DST-I) beskrevs senare av Anil K. Jain 1976, och en typ-II DST (DST-II) beskrevs sedan av HB Kekra och JK Solanka 1978.
Nasir Ahmed utvecklade också en förlustfri DCT -algoritm med Giridhar Mandyam och Neeraj Magotra vid University of New Mexico 1995. Detta gör att DCT -tekniken kan användas för förlustfri komprimering av bilder. Det är en modifiering av den ursprungliga DCT -algoritmen och innehåller element av invers DCT- och delta -modulering . Det är en mer effektiv förlustfri komprimeringsalgoritm än entropikodning . Förlustfri DCT är också känd som LDCT.
Ansökningar
DCT är den mest använda transformeringstekniken vid signalbehandling och den överlägset mest använda linjära transformationen i datakomprimering . Okomprimerade digitala medier såväl som förlustfri komprimering hade opraktiskt höga krav på minne och bandbredd , vilket reducerades avsevärt med den mycket effektiva DCT lossy-komprimeringstekniken , som kan uppnå datakomprimeringsförhållanden från 8: 1 till 14: 1 för nära studiokvalitet, upp till 100: 1 för innehåll av acceptabel kvalitet. DCT-komprimeringsstandarder används i digitala mediatekniker, såsom digitala bilder , digitala foton , digital video , strömmande media , digital-tv , strömmande tv , video-on-demand (VOD), digital bio , HD-video (HD-video) och HD-tv .
DCT, och i synnerhet DCT-II, används ofta vid signal- och bildbehandling, särskilt för förlustkomprimering, eftersom den har en stark "energipackning" -egenskap: i typiska applikationer tenderar det mesta av signalinformationen att koncentreras i några lågfrekventa komponenter i DCT. För starkt korrelerade Markov-processer kan DCT närma sig komprimeringseffektiviteten för Karhunen-Loève-transformen (vilket är optimalt i avkorrelations bemärkelse). Som förklaras nedan härstammar detta från de gränsförhållanden som är implicita i cosinusfunktionerna.
DCT används också i stor utsträckning för att lösa partiella differentialekvationer med spektrala metoder , där de olika varianterna av DCT motsvarar något olika jämna/udda gränsförhållanden i gruppens två ändar.
DCT är också nära besläktade med Chebyshev -polynom , och snabba DCT -algoritmer (nedan) används vid Chebyshevs approximation av godtyckliga funktioner efter serier av Chebyshev -polynom, till exempel i Clenshaw – Curtis kvadratur .
.
Allmänna tillämpningar
DCT används ofta i många applikationer, vilket inkluderar följande.
Audiosignalbehandlings - ljudkodning , ljuddatakomprimering (förstörande och förlustfri), surroundljud , akustiskt eko och återkopplingseliminering , fonem igenkänning, tidsdomän aliasing annullering (TDAC)
Biometri - fingeravtryck orientering, ansiktsigenkänning , biometriska vattenmärkning , fingeravtryck-baserade biometrisk vattenmärkning, palm trycket identifiering / erkännande
Datorer och Internet - World Wide Web , sociala medier , internetvideo
Hemelektronik - multimediasystem, multimedia telekommunikationsanordningar, konsumentenheter
Datakomprimering - transformera kodning , förlustig komprimering , förlustfri komprimering
Digitala medier - digital distribution
Förfalskningsdetektering
Geofysisk övergående elektromagnetik (övergående EM)
Bilder - artist identifiering, fokus och suddighet åtgärd feature extraction
Färg formatering - formatering luminans- och färgskillnader, färgformat (såsom YUV444 och YUV411 ), avkodningsoperationer såsom den omvända operationen mellan display färgformat ( YIQ , YUV , RGB )
Digital bildbehandling - digitala bilder , digitalkameror , digital fotografering , high dynamic range (HDR imaging)
Bildkomprimering - bildfilformat , multiview bildkomprimering, progressiv image transmission
Bildbehandling - digital bildbehandling , bildanalys , innehållsbaserat bildinhämtnings , hörndetektering , riktnings blockvis bildrepresentation , flankdetektering , bildförbättring , bildfusion , bildsegmentering , interpole , bildbrus nivåuppskattningen, spegling, rotation, bara -noticeable distortion (JND) profil, spatiotemporal maskeringseffekter, foveated imaging
Bildkvalitet bedömning - DCT-baserade metriska kvalitetsförsämring (DCT QM)
Bildrekonstruktion - riktade texturer automatisk inspektion, bildåterställning , målning , visuell återhämtning
Medicinsk teknik
Mönsterigenkänning
Extraktion av intresseområde (ROI)
Signalbehandling - digital signalbehandling , digitala signalprocessorer (DSP), DSP programvara , multiplexering , signalering , styrsignaler, analog-till-digital omvandling (ADC), kompressions provtagning , DCT pyramid feldöljande , nedsampling , uppsampling , signal-till- brusförhållande (SNR) uppskattning, transmux , Wiener filter
Övervakning
Fordon svart låda kamera
Video
Digital biograf - digital film , digitala filmkameror , videoredigering , filmredigering , Dolby Digital -ljud
Digital-tv (DTV) -digital-tv-sändning , standard-definition-tv (SDTV), HD-tv (HDTV), HDTV- kodare/avkodare-chips , ultra HDTV (UHDTV)
Digital video - digital versatile disc (DVD), high-definition (HD) video
Videokodnings - videokomprimering , videokodningsstandarder , rörelseuppskattning , rörelsekompense , inter-frame förutsägelse, rörelsevektorer , 3D videokodnings , lokala distorsionsdetekteringssannolikhet (LDDP) modell, rörliga objektdetektering , Multiview Video Coding (MVC)
Videobearbetning - rörelseanalys , 3D-DCT rörelseanalys, videoinnehållsanalys , datautvinning , video surfning , professionell videoproduktion
Vattenstämpel - digital vattenstämpel , bildvattenmärke , video vattenstämpel, 3D -video vattenstämpel, reversibel datahölje , vattenstämplingsdetektering
Trådlös teknik
Nätverk trådlös sensor (WSN) - trådlösa akustiska sensornätverk
Standarder för visuella medier i DCT
. I det här fallet är det typiskt 8 och DCT-II-formeln tillämpas på varje rad och kolumn i blocket. Resultatet är en 8 × 8-transformkoefficientmatris där elementet (uppe till vänster) är DC-komponenten (nollfrekvens) och poster med ökande vertikala och horisontella indexvärden representerar högre vertikala och horisontella rumsfrekvenser.
N
×
N
{\ displaystyle N \ gånger N}
N
{\ displaystyle N}
(
0
,
0
)
{\ displaystyle (0,0)}
Avancerad videokodning (AVC) använder heltalet DCT (IntDCT), ett heltals approximation av DCT. Den använder 4x4 och 8x8 heltal DCT -block. High Efficiency Video Coding (HEVC) och High Efficiency Image Format (HEIF) använder varierande heltal DCT -blockstorlekar mellan 4x4 och 32x32 pixlar . Från och med 2019 är AVC det överlägset vanligaste formatet för inspelning, komprimering och distribution av videoinnehåll, som används av 91% av videoutvecklare, följt av HEVC som används av 43% av utvecklarna.
Bildformat
Videoformat
Videokodningsstandard
År
Vanliga applikationer
H.261
1988
Först i en familj av videokodningsstandarder . Används främst i äldre videokonferenser och videotelefonprodukter .
Motion JPEG (MJPEG)
1992
QuickTime , videoredigering , icke-linjär redigering , digitalkameror
MPEG-1- video
1993
Digital videodistribution på CD- eller internetvideo
MPEG-2-video (H.262)
1995
Lagring och hantering av digitala bilder i sändningstillämpningar, digital-tv , HDTV , kabel, satellit, höghastighetståg Internet , DVD videodistribution
DV
1995
Videokameror , digitala kassetter
H.263 ( MPEG-4 del 2 )
1996
Videotelefoni över allmänt kopplat telefonnät (PSTN), H.320 , Integrated Services Digital Network (ISDN)
Avancerad videokodning (AVC / H.264 / MPEG-4 )
2003
Vanligaste HD-videoinspelnings- /komprimerings-/distributionsformat, Internetvideo , YouTube , Blu-ray-skivor , HDTV- sändningar, webbläsare , streaming-tv , mobila enheter , konsumentenheter, Netflix , videotelefoni , Facetime
Theora
2004
Internetvideo, webbläsare
VC-1
2006
Windows media, Blu-ray-skivor
Apple ProRes
2007
Professionell videoproduktion .
WebM -video
2010
Ett multimedia -open source -format som utvecklats av Google och som är avsett att användas med HTML5 .
Högeffektiv videokodning (HEVC / H.265)
2013
Framväxten till H.264/MPEG-4 AVC-standarden, som har väsentligt förbättrad kompressionsförmåga.
Daala
2013
MDCT -ljudstandarder
Allmänt ljud
Ljudkomprimering standard
År
Vanliga applikationer
Dolby Digital (AC-3)
1991
Bio , digital bio , DVD , Blu-ray , strömmande media , videospel
Adaptive Transform Acoustic Coding (ATRAC)
1992
MiniDisc
MPEG Layer III (MP3)
1993
Digital ljuddistribution , MP3 -spelare , bärbara mediaspelare , strömmande media
Perceptuell ljudkoder (PAC)
1996
Digital ljudradiotjänst (DARS)
Avancerad ljudkodning (AAC / MP4 -ljud)
1997
Digital ljuddistribution , bärbara mediaspelare , strömmande media , spelkonsoler , mobila enheter , iOS , iTunes , Android , BlackBerry
High-Efficiency Advanced Audio Coding (AAC+)
1997
Digital radio , digital ljudsändning (DAB+), Digital Radio Mondiale (DRM)
Cook Codec
1998
RealAudio
Windows Media Audio (WMA)
1999
Windows Media
Vorbis
2000
Digital ljuddistribution , radiostationer , strömmande media , videospel , Spotify , Wikipedia
High-Definition Coding (HDC)
2002
Dynamisk upplösningsanpassning (DRA)
2008
Kinas nationella ljudstandard, Kina Multimedia Mobile Broadcasting , DVB-H
Dolby AC-4
2017
ATSC 3.0 , ultra-high-definition television (UHD TV)
MPEG-H 3D-ljud
Talkodning
Talkodning standard
År
Vanliga applikationer
AAC-LD (LD-MDCT)
1999
Mobiltelefoni , voice-over-IP (VoIP), iOS , FaceTime
Siren
1999
VoIP , bredbandsljud , G.722.1
G.722.1
1999
VoIP, bredbandsljud, G.722
G.729.1
2006
G.729 , VoIP, bredbandsljud, mobiltelefoni
EVRC-WB
2007
Bredbandsljud
G.718
2008
VoIP, bredbandsljud, mobiltelefoni
G.719
2008
Telekonferenser , videokonferenser , röstbrevlåda
CELT
2011
VoIP, mobiltelefoni
Opus
2012
VoIP, mobiltelefoni, WhatsApp , PlayStation 4
Enhanced Voice Services (EVS)
2014
Mobiltelefoni, VoIP, bredbandsljud
MD DCT
Flerdimensionella DCT (MD DCT) har flera applikationer, främst 3D-DCT som 3D-DCT-II, som har flera nya applikationer som kodningssystem för Hyperspectral Imaging, 3D-kodning med variabel temporal längd, videokodningsalgoritmer , adaptiva videokodning och 3D-komprimering. På grund av förbättrad hårdvara, programvara och introduktion av flera snabba algoritmer ökar behovet av att använda MD DCT snabbt. DCT-IV har vunnit popularitet för sina applikationer inom snabb implementering av verkligt värderade polyfasfiltreringsbanker, lappade ortogonala transformeringar och cosinusmodulerade waveletbaser.
Digital signalbehandling
DCT spelar en mycket viktig roll i digital signalbehandling . Genom att använda DCT kan signalerna komprimeras. DCT kan användas i elektrokardiografi för komprimering av EKG -signaler. DCT2 ger ett bättre komprimeringsförhållande än DCT.
DCT är allmänt implementerat i digitala signalprocessorer (DSP), samt programvara för digital signalbehandling. Många företag har utvecklat DSP: er baserade på DCT -teknik. DCT används i stor utsträckning för applikationer som kodning , avkodning, video, ljud, multiplexering , styrsignaler, signalering och analog-till-digital konvertering . DCT används också ofta för high-definition television (HDTV) kodare / avkodare marker .
Komprimeringsartefakter
(t.ex. MPEG -format).
-artefakter som grund för bildens stil.
Informell översikt
Liksom alla Fourier-relaterade transformer uttrycker diskreta cosinustransformationer (DCT) en funktion eller en signal i termer av en summa av sinusoider med olika frekvenser och amplituder . Liksom den diskreta Fourier -transformen (DFT), fungerar en DCT på en funktion vid ett begränsat antal diskreta datapunkter. Den uppenbara skillnaden mellan en DCT och en DFT är att den förstnämnda endast använder cosinusfunktioner, medan den senare använder både cosinus och sinus (i form av komplexa exponentialer ). Denna synliga skillnad är emellertid bara en följd av en djupare skillnad: en DCT innebär olika gränsvillkor från DFT eller andra relaterade transformationer.
förlängning av den ursprungliga funktionen.
f
(
x
)
{\ displaystyle f (x)}
x
{\ displaystyle x}
x
{\ displaystyle x}
f
(
x
)
{\ displaystyle f (x)}
Illustration av de implicita jämna/udda förlängningarna av DCT-ingångsdata, för
N = 11 datapunkter (röda prickar), för de fyra vanligaste typerna av DCT (typ I-IV).
upprepas).
Dessa val leder till alla standardvariationer av DCT och även diskreta sinustransformationer (DST). Varje gräns kan vara antingen jämn eller udda (2 val per gräns) och kan vara symmetrisk om en datapunkt eller punkten halvvägs mellan två datapunkter (2 val per gräns), totalt 2 × 2 × 2 × 2 = 16 möjligheterna. Hälften av dessa möjligheter, de där den vänstra gränsen är jämn, motsvarar de 8 typerna av DCT; den andra halvan är de 8 typerna av sommartid.
Dessa olika gränsförhållanden påverkar starkt transformens tillämpningar och leder till unikt användbara egenskaper för de olika DCT -typerna. Mest direkt, när man använder Fourier-relaterade transformationer för att lösa partiella differentialekvationer med spektrala metoder , specificeras gränsvillkoren direkt som en del av problemet som ska lösas. Eller, för MDCT (baserat på typ-IV DCT), är gränsvillkoren intimt inblandade i MDCT: s kritiska egenskap för tidsdomänaliasering. På ett mer subtilt sätt är gränsförhållandena ansvariga för de "energikomprimering" -egenskaper som gör DCT användbara för bild- och ljudkomprimering, eftersom gränserna påverkar konvergenshastigheten för alla Fourier-liknande serier.
I synnerhet är det välkänt att eventuella diskontinuiteter i en funktion minskar konvergenshastigheten för Fourier -serien, så att fler sinusoider behövs för att representera funktionen med en given noggrannhet. Samma princip styr nyttan av DFT och andra transformer för signalkomprimering; ju smidigare en funktion är, desto färre termer i dess DFT eller DCT krävs för att representera den exakt och desto mer kan den komprimeras. (Här tänker vi på DFT eller DCT som approximationer för Fourierserierna eller cosinusserierna för en funktion, för att prata om dess "jämnhet".) Emellertid innebär DFT: s implicita periodicitet att diskontinuiteter vanligtvis inträffar vid gränserna: något slumpmässigt segment av en signal är osannolikt att ha samma värde vid både vänster och höger gräns. (Ett liknande problem uppstår för DST, där det udda vänstra gränsvillkoret innebär en diskontinuitet för någon funktion som inte råkar vara noll vid den gränsen.) Däremot ger en DCT där båda gränserna till och med alltid ger en kontinuerlig förlängning vid gränserna (även om lutningen i allmänhet är diskontinuerlig). Det är därför DCT, och i synnerhet DCT av typ I, II, V och VI (de typer som har två jämna gränser) i allmänhet fungerar bättre för signalkomprimering än DFT och DST. I praktiken är en typ-II DCT vanligtvis att föredra för sådana applikationer, delvis av beräkningsmässiga skäl.
Formell definition
reella tal enligt en av formlerna:
f
:
R
N
→
R
N
{\ displaystyle ~ f: \ mathbb {R} ^{N} \ to \ mathbb {R} ^{N} ~}
R
{\ displaystyle ~ \ mathbb {R} ~}
x
0
,
…
x
N
-
1
{\ displaystyle ~ x_ {0}, \ \ ldots \ x_ {N-1} ~}
X
0
,
…
X
N
-
1
{\ displaystyle ~ X_ {0}, \ \ ldots \ X_ {N-1} ~}
DCT-I
X
k
=
1
2
(
x
0
+
(
-
1
)
k
x
N
-
1
)
+
∑
n
=
1
N
-
2
x
n
cos
[
π
N
-
1
n
k
]
för
k
=
0
,
…
N
-
1
.
{\ displaystyle X_ {k} = {\ frac {1} {2}} (x_ {0}+(-1)^{k} x_ {N-1})+\ sum _ {n = 1}^{ N-2} x_ {n} \ cos \ vänster [\, {\ frac {\ pi} {\, N-1 \,}} \, n \, k \, \ höger] \ qquad {\ text {för }} ~ k = 0, \ \ ldots \ N-1 ~.}
.
x
0
{\ displaystyle ~ x_ {0} ~}
x
N
-
1
{\ displaystyle ~ x_ {N-1} ~}
2
,
{\ displaystyle ~ {\ sqrt {2 \,}} ~,}
X
0
{\ displaystyle ~ X_ {0} ~}
X
N
-
1
{\ displaystyle ~ X_ {N-1} ~}
1
/
2
,
{\ displaystyle ~ 1/{\ sqrt {2 \,}} ~,}
2
N
-
1
,
{\ displaystyle ~ {\ sqrt {{\ tfrac {2} {N-1 \,}} \,}} ~,}
DCT-I är exakt ekvivalent (upp till en total skalfaktor på 2), till en DFT med reella tal med jämn symmetri. Till exempel är ett DCT-I med reella tal exakt ekvivalent med en DFT med åtta reella tal (jämn symmetri), dividerat med två. (Däremot innebär DCT-typ II-IV ett halvt provskifte i motsvarande DFT.)
2
(
N
-
1
)
{\ displaystyle ~ 2 (N-1) ~}
N
=
5
{\ displaystyle ~ N = 5 ~}
a
b
c
d
e
{\ displaystyle ~ a \ b \ c \ d \ e ~}
a
b
c
d
e
d
c
b
{\ displaystyle ~ a \ b \ c \ d \ e \ d \ c \ b ~}
Observera dock att DCT-I inte är definierat för mindre än 2. (Alla andra DCT -typer definieras för alla positiva
N
{\ displaystyle ~ N ~}
N
.
{\ displaystyle ~ N ~.}
Således motsvarar DCT-I gränsvillkoren: är jämnt runt och till och med runt ; liknande för
x
n
{\ displaystyle ~ x_ {n} ~}
n
=
0
{\ displaystyle ~ n = 0 ~}
n
=
N
-
1
{\ displaystyle ~ n = N-1 ~}
X
k
.
{\ displaystyle ~ X_ {k} ~.}
DCT-II
X
k
=
∑
n
=
0
N
-
1
x
n
cos
[
π
N
(
n
+
1
2
)
k
]
för
k
=
0
,
…
N
-
1
.
{\ displaystyle X_ {k} = \ sum _ {n = 0}^{N-1} x_ {n} \ cos \ left [\, {\ tfrac {\, \ pi \,} {N}} \ left (n+{\ frac {1} {2}} \ höger) k \, \ höger] \ qquad {\ text {för}} ~ k = 0, \ \ punkter \ N-1 ~.}
DCT-II är förmodligen den vanligaste formen och kallas ofta helt enkelt "DCT".
.
4
N
{\ displaystyle ~ 4N ~}
4
N
{\ displaystyle ~ 4N ~}
y
n
,
{\ displaystyle ~ y_ {n} ~,}
y
2
n
=
0
,
{\ displaystyle ~ y_ {2n} = 0 ~,}
y
2
n
+
1
=
x
n
{\ displaystyle ~ y_ {2n+1} = x_ {n} ~}
0
≤
n
<
N
,
{\ displaystyle ~ 0 \ leq n <N ~,}
y
2
N
=
0
,
{\ displaystyle ~ y_ {2N} = 0 ~,}
y
4
N
-
n
=
y
n
{\ displaystyle ~ y_ {4N-n} = y_ {n} ~}
0
<
n
<
2
N
.
{\ displaystyle ~ 0 <n <2N ~.}
i JPEG), och en skalning kan väljas som gör att DCT kan beräknas med färre multiplikationer.
X
0
{\ displaystyle ~ X_ {0} ~}
1
/
2
.
{\ displaystyle ~ 1/{\ sqrt {2 \,}} ~.}
2
/
N
{\ displaystyle ~ {\ sqrt {{2}/{N} \,}} ~}
DCT-II innebär gränsvillkor: är jämnt runt och jämnt runt är jämnt runt och udda runt
x
n
{\ displaystyle ~ x_ {n} ~}
n
=
-
1
/
2
{\ displaystyle ~ n = -1/2 ~}
n
=
N
-
1
/
2
;
{\ displaystyle ~ n = N-1/2 ~;}
X
k
{\ displaystyle ~ X_ {k} ~}
k
=
0
{\ displaystyle ~ k = 0 ~}
k
=
N
.
{\ displaystyle ~ k = N ~.}
DCT-III
X
k
=
1
/
2
x
0
+
∑
n
=
1
N
-
1
x
n
cos
[
π
N
n
(
k
+
1
/
2
)
]
för
k
=
0
,
…
N
-
1
.
{\ displaystyle X_ {k} = {1}/{2} x_ {0}+\ sum _ {n = 1}^{N-1} x_ {n} \ cos \ left [\, {\ tfrac {\ , \ pi \,} {N}} \, n \ vänster (k+{1}/{2} \ höger) \, \ höger] \ qquad {\ text {för}} ~ k = 0, \ \ punkter \ N-1 ~.}
Eftersom det är inversen av DCT-II (upp till en skalfaktor, se nedan), kallas denna form ibland helt enkelt som "invers DCT" ("IDCT").
med halvskiftad utmatning.
x
0
{\ displaystyle ~ x_ {0} ~}
2
{\ displaystyle ~ {\ sqrt {2 \,}} ~}
x
0
/
2
{\ displaystyle ~ x_ {0}/{\ sqrt {2 \,}} ~}
2
/
N
{\ displaystyle ~ {\ sqrt {{2}/{N} \,}} ~}
DCT-III innebär gränsvillkoren: är jämnt runt och udda runt är jämnt runt och till och med runt
x
n
{\ displaystyle ~ x_ {n} ~}
n
=
0
{\ displaystyle ~ n = 0 ~}
n
=
N
;
{\ displaystyle ~ n = N ~;}
X
k
{\ displaystyle ~ X_ {k} ~}
k
=
-
1
/
2
{\ displaystyle ~ k =-{1}/{2} ~}
k
=
N
-
1
/
2
.
{\ displaystyle ~ k = N- {1}/{2} ~.}
DCT-IV
X
k
=
∑
n
=
0
N
-
1
x
n
cos
[
π
N
(
n
+
1
/
2
)
(
k
+
1
/
2
)
]
för
k
=
0
,
…
N
-
1
.
{\ displaystyle X_ {k} = \ sum _ {n = 0}^{N-1} x_ {n} \ cos \ left [\, {\ tfrac {\, \ pi \,} {N}} \, \ vänster (n+{1}/{2} \ höger) \ vänster (k+{1}/{2} \ höger) \, \ höger] \ qquad {\ text {för}} ~ k = 0, \ \ ldots \ N-1 ~.}
DCT-IV-matrisen blir ortogonal (och därmed tydligt symmetrisk, sin egen invers) om man ytterligare multiplicerar med en övergripande skalfaktor på
2
/
N
.
{\ displaystyle ~ {\ sqrt {2/N \,}} ~.}
En variant av DCT-IV, där data från olika transformationer överlappar varandra , kallas den modifierade diskreta kosinustransformen (MDCT).
DCT-IV innebär gränsvillkoren: är jämn och udda runt på samma sätt för
x
n
{\ displaystyle ~ x_ {n} ~}
n
=
-
1
/
2
{\ displaystyle ~ n =-{1}/{2} ~}
n
=
N
-
1
/
2
;
{\ displaystyle ~ n = N- {1}/{2} ~;}
X
k
.
{\ displaystyle ~ X_ {k} ~.}
DCT V-VIII
DCT av typ I – IV behandlar båda gränserna konsekvent när det gäller symmetripunkten: de är jämna/udda runt antingen en datapunkt för båda gränserna eller halvvägs mellan två datapunkter för båda gränserna. Däremot innebär DCT av typen V-VIII gränser som är jämna/udda runt en datapunkt för en gräns och halvvägs mellan två datapunkter för den andra gränsen.
Med andra ord är DCT-typerna I – IV ekvivalenta med verkliga jämna DFT: er av jämn ordning (oavsett om det är jämnt eller udda), eftersom motsvarande DFT är av längd (för DCT-I) eller (för DCT-II & III ) eller (för DCT-IV). De fyra ytterligare typerna av diskreta cosinustransform motsvarar i huvudsak verkliga jämna DFT: er av logiskt udda ordning, som har faktorer som i nämnare för cosinusargumenten.
N
{\ displaystyle ~ N ~}
2
(
N
-
1
)
{\ displaystyle ~ 2 (N-1) ~}
4
N
{\ displaystyle ~ 4N ~}
8
N
{\ displaystyle ~ 8N ~}
N
±
1
/
2
{\ displaystyle ~ N \ pm {1}/{2} ~}
Dessa varianter verkar dock sällan användas i praktiken. En anledning är kanske att FFT- algoritmer för udda längder är generellt sett mer komplicerade än FFT- algoritmer för DFT med jämn längd (t.ex. är de enklaste radix-2-algoritmerna bara för jämna längder), och denna ökade inveckling går över till DCT: erna som beskrivet nedan.
, motsvarar en DCT-V med längd )
N
=
1
.
{\ displaystyle ~ N = 1 ~.}
Omvända omvandlingar
Med hjälp av normaliseringskonventionerna ovan är inversen av DCT-I DCT-I multiplicerat med 2/( N- 1). Inversen av DCT-IV är DCT-IV multiplicerad med 2 / N . Inversen av DCT-II är DCT-III multiplicerad med 2/ N och vice versa.
.
2
/
N
{\ displaystyle {\ sqrt {2/N}}}
Flerdimensionella DCT: er
Flerdimensionella varianter av de olika DCT-typerna följer rakt av de endimensionella definitionerna: de är helt enkelt en separerbar produkt (motsvarande en sammansättning) av DCT: er längs varje dimension.
MD DCT-II
Till exempel utförs en tvådimensionell DCT-II av en bild eller en matris helt enkelt den endimensionella DCT-II, ovanifrån, utfört längs raderna och sedan längs kolumnerna (eller vice versa). Det vill säga, 2D DCT-II ges med formeln (utelämnar normalisering och andra skalfaktorer, som ovan):
X
k
1
,
k
2
=
∑
n
1
=
0
N
1
-
1
(
∑
n
2
=
0
N
2
-
1
x
n
1
,
n
2
cos
[
π
N
2
(
n
2
+
1
2
)
k
2
]
)
cos
[
π
N
1
(
n
1
+
1
2
)
k
1
]
=
∑
n
1
=
0
N
1
-
1
∑
n
2
=
0
N
2
-
1
x
n
1
,
n
2
cos
[
π
N
1
(
n
1
+
1
2
)
k
1
]
cos
[
π
N
2
(
n
2
+
1
2
)
k
2
]
.
{\ displaystyle {\ begin {align} X_ {k_ {1}, k_ {2}} & = \ sum _ {n_ {1} = 0}^{N_ {1} -1} \ left (\ sum _ { n_ {2} = 0}^{N_ {2} -1} x_ {n_ {1}, n_ {2}} \ cos \ vänster [{\ frac {\ pi} {N_ {2}}} \ vänster ( n_ {2}+{\ frac {1} {2}} \ höger) k_ {2} \ höger] \ höger) \ cos \ vänster [{\ frac {\ pi} {N_ {1}}} \ vänster ( n_ {1}+{\ frac {1} {2}} \ höger) k_ {1} \ höger] \\ & = \ sum _ {n_ {1} = 0}^{N_ {1} -1} \ summa _ {n_ {2} = 0}^{N_ {2} -1} x_ {n_ {1}, n_ {2}} \ cos \ vänster [{\ frac {\ pi} {N_ {1}}} \ vänster (n_ {1}+{\ frac {1} {2}} \ höger) k_ {1} \ höger] \ cos \ vänster [{\ frac {\ pi} {N_ {2}}} \ vänster ( n_ {2}+{\ frac {1} {2}} \ höger) k_ {2} \ höger]. \ slut {anpassad}}}
Inversen av en flerdimensionell DCT är bara en separerbar produkt av inverserna av motsvarande endimensionella DCT: er (se ovan), t.ex. de endimensionella inverser som appliceras längs en dimension i taget i en radkolumnalgoritm.
Den 3-D DCT-II är endast en förlängning av 2-D DCT-II i tredimensionellt rum och matematiskt kan beräknas genom formeln
X
k
1
,
k
2
,
k
3
=
∑
n
1
=
0
N
1
-
1
∑
n
2
=
0
N
2
-
1
∑
n
3
=
0
N
3
-
1
x
n
1
,
n
2
,
n
3
cos
[
π
N
1
(
n
1
+
1
2
)
k
1
]
cos
[
π
N
2
(
n
2
+
1
2
)
k
2
]
cos
[
π
N
3
(
n
3
+
1
2
)
k
3
]
,
för
k
i
=
0
,
1
,
2
,
…
,
N
i
-
1.
{\ displaystyle X_ {k_ {1}, k_ {2}, k_ {3}} = \ sum _ {n_ {1} = 0}^{N_ {1} -1} \ sum _ {n_ {2} = 0}^{N_ {2} -1} \ sum _ {n_ {3} = 0}^{N_ {3} -1} x_ {n_ {1}, n_ {2}, n_ {3}} \ cos \ vänster [{\ frac {\ pi} {N_ {1}}} \ vänster (n_ {1}+{\ frac {1} {2}} \ höger) k_ {1} \ höger] \ cos \ vänster [ {\ frac {\ pi} {N_ {2}}} \ vänster (n_ {2}+{\ frac {1} {2}} \ höger) k_ {2} \ höger] \ cos \ vänster [{\ frac {\ pi} {N_ {3}}} \ vänster (n_ {3}+{\ frac {1} {2}} \ höger) k_ {3} \ höger], \ quad {\ text {för}} k_ {i} = 0,1,2, \ dots, N_ {i} -1.}
Inversen av 3-D DCT-II är 3-D DCT-III och kan beräknas utifrån formeln som ges av
x
n
1
,
n
2
,
n
3
=
∑
k
1
=
0
N
1
-
1
∑
k
2
=
0
N
2
-
1
∑
k
3
=
0
N
3
-
1
X
k
1
,
k
2
,
k
3
cos
[
π
N
1
(
n
1
+
1
2
)
k
1
]
cos
[
π
N
2
(
n
2
+
1
2
)
k
2
]
cos
[
π
N
3
(
n
3
+
1
2
)
k
3
]
,
för
n
i
=
0
,
1
,
2
,
…
,
N
i
-
1.
{\ displaystyle x_ {n_ {1}, n_ {2}, n_ {3}} = \ sum _ {k_ {1} = 0}^{N_ {1} -1} \ sum _ {k_ {2} = 0}^{N_ {2} -1} \ sum _ {k_ {3} = 0}^{N_ {3} -1} X_ {k_ {1}, k_ {2}, k_ {3}} \ cos \ vänster [{\ frac {\ pi} {N_ {1}}} \ vänster (n_ {1}+{\ frac {1} {2}} \ höger) k_ {1} \ höger] \ cos \ vänster [ {\ frac {\ pi} {N_ {2}}} \ vänster (n_ {2}+{\ frac {1} {2}} \ höger) k_ {2} \ höger] \ cos \ vänster [{\ frac {\ pi} {N_ {3}}} \ vänster (n_ {3}+{\ frac {1} {2}} \ höger) k_ {3} \ höger], \ quad {\ text {för}} n_ {i} = 0,1,2, \ dots, N_ {i} -1.}
Tekniskt sett är beräkningen av en två-, tre- (eller -multi) dimensionell DCT med sekvenser av endimensionella DCT längs varje dimension känd som en rad-kolumnalgoritm . Liksom med flerdimensionella FFT -algoritmer finns det dock andra metoder för att beräkna samma sak medan beräkningarna utförs i en annan ordning (dvs sammanfogning/kombination av algoritmerna för de olika dimensionerna). På grund av den snabba tillväxten i applikationerna baserade på 3D-DCT, utvecklas flera snabba algoritmer för beräkning av 3D-DCT-II. Vector-Radix-algoritmer tillämpas för beräkning av MD DCT för att minska beräkningskomplexiteten och för att öka beräkningshastigheten. För att beräkna 3D-DCT-II effektivt, utvecklades en snabb algoritm, Vector-Radix Decimation in Frequency (VR DIF) algoritm.
3-D DCT-II VR DIF
För att kunna tillämpa VR DIF -algoritmen ska inmatningsdata formuleras och ordnas om enligt följande. Transformstorleken N × N × N antas vara 2.
De fyra grundläggande stadierna för beräkning av 3D-DCT-II med VR DIF-algoritm.
x
~
(
n
1
,
n
2
,
n
3
)
=
x
(
2
n
1
,
2
n
2
,
2
n
3
)
x
~
(
n
1
,
n
2
,
N
-
n
3
-
1
)
=
x
(
2
n
1
,
2
n
2
,
2
n
3
+
1
)
x
~
(
n
1
,
N
-
n
2
-
1
,
n
3
)
=
x
(
2
n
1
,
2
n
2
+
1
,
2
n
3
)
x
~
(
n
1
,
N
-
n
2
-
1
,
N
-
n
3
-
1
)
=
x
(
2
n
1
,
2
n
2
+
1
,
2
n
3
+
1
)
x
~
(
N
-
n
1
-
1
,
n
2
,
n
3
)
=
x
(
2
n
1
+
1
,
2
n
2
,
2
n
3
)
x
~
(
N
-
n
1
-
1
,
n
2
,
N
-
n
3
-
1
)
=
x
(
2
n
1
+
1
,
2
n
2
,
2
n
3
+
1
)
x
~
(
N
-
n
1
-
1
,
N
-
n
2
-
1
,
n
3
)
=
x
(
2
n
1
+
1
,
2
n
2
+
1
,
2
n
3
)
x
~
(
N
-
n
1
-
1
,
N
-
n
2
-
1
,
N
-
n
3
-
1
)
=
x
(
2
n
1
+
1
,
2
n
2
+
1
,
2
n
3
+
1
)
{\ displaystyle {\ begin {array} {lcl} {\ tilde {x}} (n_ {1}, n_ {2}, n_ {3}) = x (2n_ {1}, 2n_ {2}, 2n_ { 3}) \\ {\ tilde {x}} (n_ {1}, n_ {2}, N-n_ {3} -1) = x (2n_ {1}, 2n_ {2}, 2n_ {3}+ 1) \\ {\ tilde {x}} (n_ {1}, N-n_ {2} -1, n_ {3}) = x (2n_ {1}, 2n_ {2}+1,2n_ {3} ) \\ {\ tilde {x}} (n_ {1}, N-n_ {2} -1, N-n_ {3} -1) = x (2n_ {1}, 2n_ {2}+1,2n_ {3} +1) \\ {\ tilde {x}} (N-n_ {1} -1, n_ {2}, n_ {3}) = x (2n_ {1}+1,2n_ {2}, 2n_ {3}) \\ {\ tilde {x}} (N-n_ {1} -1, n_ {2}, N-n_ {3} -1) = x (2n_ {1}+1,2n_ { 2}, 2n_ {3} +1) \\ {\ tilde {x}} (N-n_ {1} -1, N-n_ {2} -1, n_ {3}) = x (2n_ {1} +1,2n_ {2}+1,2n_ {3}) \\ {\ tilde {x}} (N-n_ {1} -1, N-n_ {2} -1, N-n_ {3}- 1) = x (2n_ {1}+1,2n_ {2}+1,2n_ {3} +1) \\\ end {array}}}
var
0
≤
n
1
,
n
2
,
n
3
≤
N
2
-
1
{\ displaystyle 0 \ leq n_ {1}, n_ {2}, n_ {3} \ leq {\ frac {N} {2}}-1}
Figuren till intilliggande visar de fyra stegen som är inblandade i beräkningen av 3-D DCT-II med VR DIF-algoritm. Det första steget är 3-D-ordningen med hjälp av indexmappningen som illustreras av ovanstående ekvationer. Det andra steget är fjärilsberäkningen. Varje fjäril beräknar åtta poäng tillsammans som visas i figuren precis nedan, var .
c
(
φ
i
)
=
cos
(
φ
i
)
{\ displaystyle c (\ varphi _ {i}) = \ cos (\ varphi _ {i})}}
Den ursprungliga 3D-DCT-II kan nu skrivas som
X
(
k
1
,
k
2
,
k
3
)
=
∑
n
1
=
1
N
-
1
∑
n
2
=
1
N
-
1
∑
n
3
=
1
N
-
1
x
~
(
n
1
,
n
2
,
n
3
)
cos
(
φ
k
1
)
cos
(
φ
k
2
)
cos
(
φ
k
3
)
{\ displaystyle X (k_ {1}, k_ {2}, k_ {3}) = \ sum _ {n_ {1} = 1}^{N-1} \ sum _ {n_ {2} = 1}^ {N-1} \ sum _ {n_ {3} = 1}^{N-1} {\ tilde {x}} (n_ {1}, n_ {2}, n_ {3}) \ cos (\ varphi k_ {1}) \ cos (\ varphi k_ {2}) \ cos (\ varphi k_ {3})}}
var
φ
i
=
π
2
N
(
4
N
i
+
1
)
,
och
i
=
1
,
2
,
3.
{\ displaystyle \ varphi _ {i} = {\ frac {\ pi} {2N}} (4N_ {i} +1), {\ text {och}} i = 1,2,3.}
Om de jämna och udda delarna av och och beaktas kan den allmänna formeln för beräkning av 3D-DCT-II uttryckas som
k
1
,
k
2
{\ displaystyle k_ {1}, k_ {2}}
k
3
{\ displaystyle k_ {3}}
Det enda fjärilsstadiet i VR DIF -algoritmen.
X
(
k
1
,
k
2
,
k
3
)
=
∑
n
1
=
1
N
2
-
1
∑
n
2
=
1
N
2
-
1
∑
n
1
=
1
N
2
-
1
x
~
i
j
l
(
n
1
,
n
2
,
n
3
)
cos
(
φ
(
2
k
1
+
i
)
cos
(
φ
(
2
k
2
+
j
)
cos
(
φ
(
2
k
3
+
l
)
)
{\ displaystyle X (k_ {1}, k_ {2}, k_ {3}) = \ sum _ {n_ {1} = 1}^{{\ tfrac {N} {2}}-1} \ sum _ {n_ {2} = 1}^{{\ tfrac {N} {2}}-1} \ sum _ {n_ {1} = 1}^{{\ tfrac {N} {2}}-1} { \ tilde {x}} _ {ijl} (n_ {1}, n_ {2}, n_ {3}) \ cos (\ varphi (2k_ {1}+i) \ cos (\ varphi (2k_ {2}+) j) \ cos (\ varphi (2k_ {3}+l))}
var
x
~
i
j
l
(
n
1
,
n
2
,
n
3
)
=
x
~
(
n
1
,
n
2
,
n
3
)
+
(
-
1
)
l
x
~
(
n
1
,
n
2
,
n
3
+
n
2
)
{\ displaystyle {\ tilde {x}} _ {ijl} (n_ {1}, n_ {2}, n_ {3}) = {\ tilde {x}} (n_ {1}, n_ {2}, n_ {3})+(-1)^{l} {\ tilde {x}} \ vänster (n_ {1}, n_ {2}, n_ {3}+{\ frac {n} {2}} \ höger )}}
+
(
-
1
)
j
x
~
(
n
1
,
n
2
+
n
2
,
n
3
)
+
(
-
1
)
j
+
l
x
~
(
n
1
,
n
2
+
n
2
,
n
3
+
n
2
)
{\ displaystyle +(-1)^{j} {\ tilde {x}} \ vänster (n_ {1}, n_ {2} +{\ frac {n} {2}}, n_ {3} \ höger) +(-1)^{j+l} {\ tilde {x}} \ vänster (n_ {1}, n_ {2}+{\ frac {n} {2}}, n_ {3}+{\ frac {n} {2}} \ höger)}
+
(
-
1
)
i
x
~
(
n
1
+
n
2
,
n
2
,
n
3
)
+
(
-
1
)
i
+
j
x
~
(
n
1
+
n
2
+
n
2
,
n
2
,
n
3
)
{\ displaystyle +(-1)^{i} {\ tilde {x}} \ vänster (n_ {1} +{\ frac {n} {2}}, n_ {2}, n_ {3} \ höger) +(-1)^{i+j} {\ tilde {x}} \ vänster (n_ {1}+{\ frac {n} {2}}+{\ frac {n} {2}}, n_ { 2}, n_ {3} \ höger)}
+
(
-
1
)
i
+
l
x
~
(
n
1
+
n
2
,
n
2
,
n
3
+
n
3
)
{\ displaystyle+(-1)^{i+l} {\ tilde {x}} \ vänster (n_ {1}+{\ frac {n} {2}}, n_ {2}, n_ {3}+ {\ frac {n} {3}} \ höger)}
+
(
-
1
)
i
+
j
+
l
x
~
(
n
1
+
n
2
,
n
2
+
n
2
,
n
3
+
n
2
)
var
i
,
j
,
l
=
0
eller
1.
{\ displaystyle+(-1)^{i+j+l} {\ tilde {x}} \ vänster (n_ {1}+{\ frac {n} {2}}, n_ {2}+{\ frac {n} {2}}, n_ {3}+{\ frac {n} {2}} \ höger) {\ text {där}} i, j, l = 0 {\ text {eller}} 1.}
Aritmetisk komplexitet
Hela 3D-beräkningen av DCT behöver steg, och varje steg innefattar fjärilar. Hela 3D-DCT kräver att fjärilar beräknas. Varje fjäril kräver sju verkliga multiplikationer (inklusive triviala multiplikationer) och 24 riktiga tillägg (inklusive triviala tillägg). Därför är det totala antalet reella multiplikationer som behövs för detta steg och det totala antalet reella tillägg, dvs inklusive posttillägg (rekursiva tillägg) som kan beräknas direkt efter fjärilssteget eller efter bitomvändningssteget ges av
[
logga
2
N
]
{\ displaystyle ~ [\ log _ {2} N] ~}
1
8
N
3
{\ displaystyle ~ {\ tfrac {1} {8}} \ N^{3} ~}
[
1
8
N
3
logga
2
N
]
{\ displaystyle ~ \ left [{\ tfrac {1} {8}} \ N^{3} \ log _ {2} N \ right] ~}
[
7
8
N
3
logga
2
N
]
,
{\ displaystyle ~ \ left [{\ tfrac {7} {8}} \ N^{3} \ \ log _ {2} N \ right] ~,}
[
3
2
N
3
logga
2
N
]
⏟
Verklig
+
[
3
2
N
3
logga
2
N
-
3
N
3
+
3
N
2
]
⏟
Rekursiv
=
[
9
2
N
3
logga
2
N
-
3
N
3
+
3
N
2
]
.
{\ displaystyle ~ \ underbrace {\ left [{\ frac {3} {2}} N^{3} \ log _ {2} N \ right]} _ {\ text {Real}}+\ underbrace {\ left [{\ frac {3} {2}} N^{3} \ log _ {2} N-3N^{3}+3N^{2} \ höger]} _ {\ text {Rekursiv}} = \ vänster [{\ frac {9} {2}} N^{3} \ log _ {2} N-3N^{3}+3N^{2} \ höger] ~.}
Den konventionella metoden för att beräkna MD-DCT-II använder en Row-Column-Frame (RCF) metod som är beräkningsmässigt komplex och mindre produktiv på de mest avancerade senaste hårdvaruplattformarna. Antalet multiplikationer som krävs för att beräkna VR DIF -algoritm jämfört med RCF -algoritm är ganska många. Antalet multiplikationer och tillägg som är involverade i RCF tillvägagångssätt ges av och respektive. Av tabell 1 framgår att det totala antalet
[
3
2
N
3
logga
2
N
]
{\ displaystyle ~ \ left [{\ frac {3} {2}} N^{3} \ log _ {2} N \ right] ~}
[
9
2
N
3
logga
2
N
-
3
N
3
+
3
N
2
]
,
{\ displaystyle ~ \ left [{\ frac {9} {2}} N^{3} \ log _ {2} N-3N^{3}+3N^{2} \ right] ~,}
TABELL 1 Jämförelse av VR DIF & RCF-algoritmer för beräkning av 3D-DCT-II
Transform Storlek
3D VR Mults
RCF Mults
3D VR -tillägg
RCF lägger till
8 × 8 × 8
2.625
4.5
10.875
10.875
16 × 16 × 16
3.5
6
15.188
15.188
32 × 32 × 32
4.375
7.5
19.594
19.594
64 × 64 × 64
5,25
9
24.047
24.047
av multiplikationer associerade med 3D-DCT VR-algoritmen är mindre än den som associeras med RCF-metoden med mer än 40%. Dessutom innefattar RCF -metoden matriotransponering och mer indexering och databyte än den nya VR -algoritmen. Detta gör 3-D DCT VR-algoritmen mer effektiv och bättre lämpad för 3D-applikationer som involverar 3D-DCT-II, till exempel videokomprimering och andra 3D-bildbehandlingsprogram.
Den viktigaste övervägningen vid val av en snabb algoritm är att undvika beräkningsmässiga och strukturella komplexiteter. I takt med att tekniken för datorer och DSP utvecklas, blir körtiden för aritmetiska operationer (multiplikationer och tillägg) mycket snabb, och regelbunden beräkningsstruktur blir den viktigaste faktorn. Därför, även om den ovan föreslagna 3D-algoritmen inte uppnår den teoretiska nedre gränsen för antalet multiplikationer, har den en enklare beräkningsstruktur jämfört med andra 3D-algoritmer för DCT. Den kan implementeras på plats med en enda fjäril och har egenskaperna hos Cooley-Tukey FFT-algoritmen i 3D. Därför presenterar 3D-VR ett bra val för att minska aritmetiska operationer vid beräkningen av 3D-DCT-II, samtidigt som den behåller den enkla strukturen som kännetecknar fjärilstil Cooley – Tukey FFT-algoritmer .
Tvådimensionella DCT-frekvenser från
JPEG DCT
av dessa 64 frekvenskvadrater.
(
N
1
=
N
2
=
8
)
{\ displaystyle (~ N_ {1} = N_ {2} = 8 ~)}
MD-DCT-IV
dimensionell domän. 2-D DCT-IV för en matris eller en bild ges av
X
k
,
ℓ
=
∑
n
=
0
N
-
1
∑
m
=
0
M
-
1
x
n
,
m
cos
(
(
2
m
+
1
)
(
2
k
+
1
)
π
4
N
)
cos
(
(
2
n
+
1
)
(
2
ℓ
+
1
)
π
4
M
)
,
{\ displaystyle X_ {k, \ ell} = \ sum _ {n = 0}^{N-1} \; \ sum _ {m = 0}^{M-1} \ x_ {n, m} \ cos \ vänster (\ {\ frac {\, (2m+1) (2k+1) \ \ pi \,} {4N}} \ \ höger) \ cos \ vänster (\ {\ frac {\, (2n+1 ) (2 \ ell +1) \ \ pi \,} {4M}} \ \ höger) ~,}
för och
k
=
0
,
1
,
2
…
N
-
1
{\ displaystyle ~~ k = 0, \ 1, \ 2 \ \ ldots \ N-1 ~~}
ℓ
=
0
,
1
,
2
,
…
M
-
1
.
{\ displaystyle ~~ \ ell = 0, \ 1, \ 2, \ \ ldots \ M-1 ~.}
Vi kan beräkna MD DCT-IV med den vanliga radkolumnmetoden eller så kan vi använda metoden för polynomtransformering för snabb och effektiv beräkning. Huvudidén med denna algoritm är att använda Polynomial Transform för att omvandla den flerdimensionella DCT: n direkt till en serie 1-D DCT: er. MD DCT-IV har också flera applikationer inom olika områden.
Beräkning
(FFT). Man kan också beräkna DCT via FFT i kombination med för- och efterbehandlingssteg. I allmänhet är metoder för att beräkna DCT kända som snabb cosinustransform (FCT) algoritmer.
O
(
N
2
)
{\ displaystyle ~ {\ mathcal {O}} (N^{2}) ~}
O
(
N
logga
N
)
{\ displaystyle ~ {\ mathcal {O}} (N \ log N) ~}
O
(
N
)
{\ displaystyle ~ {\ mathcal {O}} (N) ~}
O
(
N
logga
N
)
{\ displaystyle ~ {\ mathcal {O}} (N \ log N) ~}
).
O
(
N
)
{\ displaystyle ~ {\ mathcal {O}} (N) ~}
komprimering, eller de små DCT: erna (eller MDCT) som vanligtvis används vid ljudkomprimering. (Minskad kodstorlek kan också vara en anledning att använda en specialiserad DCT för inbäddade appar.)
), matchar den resulterande algoritmen faktiskt det som länge var det lägsta publicerade aritmetiska antalet för effekt- av två DCT-II ( real-aritmetiska operationer).
4
N
{\ displaystyle ~ 4N ~}
N
{\ displaystyle ~ N ~}
2
N
logga
2
N
-
N
+
2
{\ displaystyle ~ 2N \ log _ {2} N-N+2 ~}
En färsk minskning av antalet operationer för att även använda en FFT med realdata. Så det finns inget som är egentligen dåligt med att beräkna DCT via en FFT ur ett aritmetiskt perspektiv - det är ibland bara en fråga om huruvida motsvarande FFT -algoritm är optimal. (I praktiken kan funktionssamtalskostnaderna för att åberopa en separat FFT-rutin vara betydande för små, men det här är en implementering snarare än en algoritmisk fråga eftersom det kan lösas genom att rulla ut eller infoga.)
17
9
N
logga
2
N
+
O
(
N
)
{\ displaystyle ~ {\ tfrac {17} {9}} N \ log _ {2} N+{\ mathcal {O}} (N)}
N
,
{\ displaystyle ~ N ~,}
Exempel på IDCT
Ett exempel som visar åtta olika filter applicerade på en testbild (uppe till vänster) genom att multiplicera dess DCT -spektrum (uppe till höger) med varje filter.
Tänk på denna 8x8 gråskalebild av stor bokstav A.
Originalstorlek, skalad 10x (närmaste granne), skalad 10x (bilinjär).
Grundfunktioner för den diskreta cosinustransformationen med motsvarande koefficienter (specifika för vår bild).
Bildens DCT = .
[
6.1917
-
0,3411
1.2418
0.1492
0,1583
0,2742
-
0,0724
0,0561
0,2205
0,0214
0,4503
0,3947
-
0,7846
-
0,4391
0,1001
-
0,2554
1.0423
0,2214
-
1.0017
-
0,2720
0,0789
-
0,1952
0,2801
0,4713
-
0,2340
-
0,0392
-
0,2617
-
0.2866
0,6351
0,3501
-
0,1433
0,3550
0,2750
0,0226
0,1222
0,2183
-
0,2583
-
0,0742
-
0,2042
-
0,5906
0,0653
0,0428
-
0.4721
-
0,2905
0.4745
0,2875
-
0,0284
-
0,1311
0,3169
0,0541
-
0,1033
-
0,0225
-
0,0056
0,1017
-
0,1650
-
0,1500
-
0,2970
-
0,0627
0,1960
0,0644
-
0,1313
-
0,1031
0,1887
0,1444
]
{\ displaystyle {\ begin {bmatrix} 6.1917 & -0.3411 & 1.2418 & 0.1492 & 0.1583 & 0.2742 & -0.0724 & 0.0561 \\ 0.2205 & 0.0214 & 0.4503 & 0.3947 & -0.7846 & -0.4391 & 0.1001 & -0.2554 \\ 1.0423 & 0.2214 & -1.0017 & -0.2720 & 0.0789 & -0.1952 & 0.2801 & 0.4713 \\-0.2340 & -0.0392 & -0.2617 & -0.2866 & 0.6351 & 0.3501 & -0.1433 & 0.3550 \\ 0.2750 & 0.0226 & 0.1229 & 0. 2183 & -0.2583 & -0.0742 & -0.2042 & -0.5906 \\ 0.0653 & 0.0428 & -0.4721 & -0.2905 & 0.4745 & 0.2875 & -0.0284 & -0.1311 \\ 0.3169 & 0.0541 & -0.1033 & -0.0225 & -0.0056 & 0.1017 & -0.1650 & -0.1500 \\-0.2970 & -0.0627 & 0.1960 & 0.0644 & -0.1136 & -0.1031 & 0.1887 & 0.1444 \\\ end {bmatrix}}}
Varje basfunktion multipliceras med dess koefficient och sedan läggs denna produkt till den slutliga bilden.
Till vänster är den sista bilden. I mitten är den viktade funktionen (multiplicerad med en koefficient) som läggs till den slutliga bilden. Till höger är den aktuella funktionen och motsvarande koefficient. Bilderna skalas (med hjälp av bilinjär interpolering) med faktor 10 ×.
Se även
Förklarande anteckningar
Citat
Vidare läsning
Narasimha, M .; Peterson, A. (juni 1978). "Om beräkningen av den diskreta kosinustransformen". IEEE -transaktioner om kommunikation . 26 (6): 934–936. doi : 10.1109/TCOM.1978.1094144 .
Makhoul, J. (februari 1980). "En snabb cosinustransform i en och två dimensioner". IEEE -transaktioner om akustik, tal och signalbehandling . 28 (1): 27–34. doi : 10.1109/TASSP.1980.1163351 .
Sorensen, H .; Jones, D .; Heideman, M .; Burrus, C. (juni 1987). "Verkligt värderade snabba Fourier-transformeringsalgoritmer". IEEE -transaktioner om akustik, tal och signalbehandling . 35 (6): 849–863. CiteSeerX . doi : 10.1109/TASSP.1987.1165220 .
Plonka, G .; Tasche, M. (januari 2005). "Snabba och numeriskt stabila algoritmer för diskreta cosinustransformationer" . Linjär algebra och dess tillämpningar . 394 (1): 309–345. doi : .
Duhamel, P .; Vetterli, M. (april 1990). "Snabba Fourier -transformationer: En studieöversikt och en toppmodern teknik" . Signalbehandling (skickat manuskript). 19 (4): 259–299. doi : 10.1016/0165-1684 (90) 90158-U .
Ahmed, N. (januari 1991). "Hur jag kom på den diskreta kosinustransformen" . Digital signalbehandling . 1 (1): 4–9. doi : 10.1016/1051-2004 (91) 90086-Z .
Feig, E .; Winograd, S. (september 1992). "Snabba algoritmer för den diskreta cosinustransformen". IEEE -transaktioner om signalbehandling . 40 (9): 2174–2193. Bibcode : 1992ITSP ... 40.2174F . doi : 10.1109/78.157218 .
Malvar, Henrique (1992), Signal Processing with Lapped Transforms , Boston: Artech House, ISBN 978-0-89006-467-2
Martucci, SA (maj 1994). "Symmetrisk krökning och de diskreta sinus- och cosinustransformerna". IEEE -transaktioner om signalbehandling . 42 (5): 1038–1051. Bibcode : 1994ITSP ... 42.1038M . doi : 10.1109/78.295213 .
Oppenheim, Alan; Schafer, Ronald; Buck, John (1999), (2nd ed.), Upper Saddle River, NJ: Prentice Hall, ISBN 978-0-13-754920-7
Frigo, M .; Johnson, SG (februari 2005). "Design och implementering av FFTW3" (PDF)
. IEEE: s förfaranden . 93 (2): 216–231. CiteSeerX . doi : 10.1109/JPROC.2004.840301 . S2CID 6644892 .
Boussakta, Said .; Alshibami, Hamoud O. (april 2004). "Snabb algoritm för 3D-DCT-II" (PDF)
. IEEE -transaktioner om signalbehandling . 52 (4): 992–1000. Bibcode : 2004ITSP ... 52..992B . doi : 10.1109/TSP.2004.823472 . S2CID 3385296 .
Cheng, LZ; Zeng, YH (2003). "Ny snabb algoritm för flerdimensionell typ-IV DCT". IEEE -transaktioner om signalbehandling . 51 (1): 213–220. doi : 10.1109/TSP.2002.806558 .
Wen-Hsiung Chen; Smith, C .; Fralick, S. (september 1977). "En snabb beräkningsalgoritm för den diskreta kosinustransformen". IEEE -transaktioner om kommunikation . 25 (9): 1004–1009. doi : 10.1109/TCOM.1977.1093941 .
Tryck, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007), "Avsnitt 12.4.2. Cosine Transform" , Numerical Recipes: The Art of Scientific Computing (3: e upplagan), New York: Cambridge University Press, ISBN 978-0-521-88068-8
externa länkar
<img src="//en.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">