Hastighetsförvrängningsoptimering
Rate-distortion optimization ( RDO ) är en metod för att förbättra videokvaliteten vid videokomprimering . Namnet hänvisar till optimeringen av mängden distorsion (förlust av videokvalitet) mot mängden data som krävs för att koda videon, hastigheten . Även om det främst används av videokodare, kan optimering av hastighetsförvrängning användas för att förbättra kvaliteten i alla kodningssituationer (bild, video, ljud eller annat) där beslut måste fattas som påverkar både filstorlek och kvalitet samtidigt.
Bakgrund
Den klassiska metoden för att fatta kodningsbeslut är att videokodaren väljer det resultat som ger den högsta kvalitetsbilden. Detta har dock nackdelen att valet det gör kan kräva fler bitar samtidigt som det ger förhållandevis liten kvalitetsfördel. Ett vanligt exempel på detta problem är rörelseuppskattning , och i synnerhet när det gäller användningen av kvartspixelprecisionsrörelseuppskattning . Att lägga till den extra precisionen till rörelsen av ett block under rörelseuppskattning kan öka kvaliteten, men i vissa fall är den extra kvaliteten inte värd de extra bitarna som krävs för att koda rörelsevektorn till en högre precision.
Hur det fungerar
Hastighetsförvrängningsoptimering löser det tidigare nämnda problemet genom att fungera som ett videokvalitetsmått, som mäter både avvikelsen från källmaterialet och bitkostnaden för varje möjligt beslutsresultat. Bitarna mäts matematiskt genom att multiplicera bitkostnaden med Lagrangian, ett värde som representerar förhållandet mellan bitkostnad och kvalitet för en viss kvalitetsnivå. Avvikelsen från källan mäts vanligtvis som medelkvadratfelet , för att maximera PSNR- videokvalitetsmåttet.
Att beräkna bitkostnaden försvåras av entropikodarna i moderna videokodekar, vilket kräver att algoritmen för optimering av hastighetsdistorsion skickar varje videoblock som ska testas till entropikodaren för att mäta dess faktiska bitkostnad. I MPEG- codecs består hela processen av en diskret cosinustransform , följt av kvantisering och entropikodning. På grund av detta är optimering av hastighetsdistorsion mycket långsammare än de flesta andra blockmatchningsmått, såsom den enkla summan av absoluta skillnader (SAD) och summan av absoluta transformerade skillnader (SATD). Som sådan används den vanligtvis endast för de sista stegen av rörelseuppskattningsprocessen , som att välja mellan olika partitionstyper i H.264/AVC .
Lista över kodare som stöder RDO
- Ateme H.264- kodare
- Grass Valley ViBE-kodare (SD & HD MPEG-2/MPEG-4)
- Harmonic Electra 8000-kodare (SD & HD MPEG-2/MPEG-4)
- libavcodec
- MainConcept H.264- kodare
- Microsoft VC-1 kodare
- TANDBERG TV SD MPEG-2 EN8100
- TANDBERG TV HD MPEG-4 EN8190
- TANDBERG TV SD & HD MPEG-4 iPlex
- Theora 1.1-alpha1 och senare ("Thusnelda"-grenen)
- x264 H.264-kodare
- x265 H.265-kodare
- Xvid MPEG-4 ASP- kodare
- H.264/AVC referensmjukvara JM (Joint Model)
- HEVC referensmjukvara HM (HEVC Test Model)
- Kvazaar (delvis)