19

The main difference between DCT and PCA (more precisely, representing a dataset in the basis formed by the eigenvectors of its correlation matrix - also known as the Karhunen Loeve Transform) is that the PCA must be defined with respect to a given dataset (from which the correlation matrix is estimated), while the DCT is "absolute" and is only defined by the ...


8

There are various aspects of compression - whether you are referring to image or video. (May be audio is totally different so i am not referring this here). If you really look at the history of compression standard, when they were first formed - MPEG1 real time encoders were rare. CPU at that time itself was not enough to make it real time; however, it was ...


5

To simplify your confusion - there two processes : 1. Motion estimation 2. Motion compensation Before we talk about the estimation, we should talk about the Motion compensation. Let say, the $ Image_{t}(x,y) $ is split in block $ Blocks_{t}[k](x',y') $. The task of Motion compensation is to produce $ Blocks_{t}[k](x',y') $ from any region of $ ...


5

Monocular video is taken using a single camera. Stereo video is taken using two cameras side-by-side, producing two video streams. That's pretty much it. A stereo video pair allows depth measurement, so you can find out how far away things are. However, this is not an easy task for complex scenes.


4

Your first problem is memory - even the largest version of that processor doesn't have that much internal SRAM (in video terms - it's a stonking embedded processor compared to many though!) - a VGA frame is 300kB, vs the 100ishkB in the processor. That means you'll have to process it as it comes in - say in 8 or 16 line chunks, which makes it much more of a ...


3

[EDIT: addition of a March 2017 preprint] Deep learning already has many applications in video, like enhancement (Deep Convolutional Neural Network for Decompressed Video Enhancement) or semantic analysis. Recently, there have been some announcements related to video compression, for instance: Generative Compression (Preprint, March 2017) Traditional ...


3

I think the following code can help you: https://github.com/vadimkantorov/mpegflow The main idea is that you need to decode frames first and query motion frames by calling av_frame_get_side_data function.


3

As is the case with many standard signal processing routines, it's quite straightforward on paper and a little tricky in practice. You separated your image into six blocks $B(i,j)$ with $i = \{0,1,2\}$ and $j = \{0,1\}$. each of this blocks has coordinates at $(2i, 2j)$ (we consider top left corner of each to identify its location). We, therefore, now have ...


3

No, it won't leave holes, because the vector is from an unknown frame (P or B), to a known frame (I-frame). It reminds a little bit of how ot compute an image transformation - you use a backward transform to avoid holes/


3

Before elaborating anything, i would urge you to go through my answer here that simplifies some of the common confusions prevailing about motion vectors and estimations. Your essential question is - when or how does encoder decides to put B frame or bidirectional motion vectors. I will break your questions into few as follows: 1. When does encoder decides ...


2

The total delay is directly related to minimum delay that needs processing at encoder and decoder before which the first frame is ready to render at the receiver. The process of the transmission and decoding will happen as follows: The IBBPBBI with index (0,1,2,3,4,5,6) will be compressed and transmitted in the patterns - as IPBBIBB (0,3,1,2,6,4,5). Given ...


2

You can't start playing any B frame until the next following I or P frame has been scanned, compressed, transmitted, received, and decompressed.


2

Assuming the encoder properly low-pass filtered the chroma before sampling (which may not always be true), chroma samples from the adjacent macroblocks might need to be used to properly reconstruct (interpolate) any per pixel color. Those samples may exist due to motion compensation from previous fields, or might need to be inferred by reflecting, ...


2

1. Classify whether you need low MIPS or low complexity overall Let me take a small liberty to split this problem in two parts. Low complexity encoding - which allows lower resources (specially in memory) to make it quick responding encoding in the given system. Low explicit in computation (MIPS). - which only concerned with minimum possible CPU cycles. ...


2

There are many ways to skin this cat. I'll explain one way that I know is used in industry. Create candidate frames algorithmically using the image features; e.g., the histogram, sharpness, presence of humans, faces, and anything else you can think of. Serve different candidates to different users and see which ones are popular You can stop once the ...


2

The 3-digit number describes the subsampling of the chroma (U and V) channels. A detailed explanation is at http://en.wikipedia.org/wiki/Chroma_subsampling In particular, YUV420 means that the U and V channels have half the resolution of the luma (Y) channel, in the horizontal and vertical directions. The sampling method usually present in low to medium ...


2

Theoretically, VQ is always better than scalar quantization (SQ). However, as you already mentioned, the complexity of VQ is higher than the complexity of SQ. It increases exponentially together with the dimensionality of vectors. Therefore, the question is how to design a practical coding system which can provide a best rate-distortion performance under a ...


2

No. The MPEG4 video codec allows for a large ranges (easily a dynamic range of 50 for "useful" quality) of compression ratios for the same raw video material. The same applies to audio compressors. And of course, there's simply video material that is easy to compress, so using the same type of quantization, motion prediction and frame structure, some ...


2

For actual implementations take a look at (C) programming codes for decoders. Basically the process is simple, you create an abstraction such as bits = get_bits(n) Where, n is the n bits you want to read. the var bits is left aligned. It extracts it from some byte_buffer - say a 32 bit or 64 bit symbols. NOTE: All, practical codecs put major symbols ...


1

Usually, Salt and Pepper Noise is done using Median Filter. There are variations of the Non Local Means to deal with Salt and Pepper but it might be overkill so I'd start with the above. The tricky thing is to take advantage of having a Video and not just a static single image. Hence you can also apply the filter in a temporal form. If you use small kernel ...


1

Well video compression is essentially changing the representation of the video into an intermediate one, such that this representation could be used to recover the original video to the best possible extent. What you store is a much shorter representation instead of the full video. Well, putting it that way immediately reminds me of the (Convolutional) Auto ...


1

There are several tools to analyze video streams which which can provide slice and macroblock level information: Intel Video Pro Analyzer Tektronix Video Analyzer H264bitstream ffmpeg (page Analyzing Macroblock Types) Avidemux From How extract Intra-Prediction modes out of h264 stream, it seems that ffmpeg or ffprobe can do a lot of jobs.


1

I think there are multiple things to consider here: 1) Where are you dividing the image into 8x8 blocks? If you don't divide like this, then normalization by 64 is meaningless, and you are just computing SAD over all pixels. Maybe I'm seeing something wrong? You should do the normalized SAD in those small windows and then sum and normalize. And since 3600 ...


1

It is possible to extract the transform coefficients without fully decoding the entire picture, but you would still have to find your way through the bit stream, parsing whatever is necessary in order to arrive at every transform unit, which might also not be present for every coding unit (if some macroblock matches exactly one in a reference picture then ...


1

Sparse dictionaries, dictionary learning or dictionary coding has been popular (and also shown to be quite high-performing) for noise reduction (denoising) and it is basically a kind of vector quantizer. Building the code-book (dictionary) takes time and I don't know exactly how large it typically becomes for denoising applications, but if it is calculated ...


1

I think you have in general the correct idea. But you have to remember that the encode order (and therefore the order in which the pictures will appear in the bitstream and be decoded), depends on how the references are. if you have: I(1) B(2) B(3) P(4) B(5) B(6) P(7). etc... You could have a structure where in the group [B(2) B(3) P(4)], the first B(2) ...


1

Try https://github.com/jishnujayakumar/MV-Tractus. This tool will give you motion vectors in the form of JSON for every frame.


1

The ffmpeg implementation of the HEVC decoding follows this formula instead: $ |p_2,_0 - 2p_1,_0+p_0,_0|+|p_2,_3 - 2p_1,_3+p_0,_3|+|q_2,_0 - 2q_1,_0+q_0,_0|+|q_2,_3 - 2q_1,_3+q_0,_3|<\beta \ (1)$ This appears in the hevc_deblock.asm file. ;compare pcmpgtw m15, m13, m14 movmskps r13, m15 ;filtering mask 0d0 + 0d3 < beta0 (bit 2 ...


1

Reduction of Noise in a video depends on what type of noise is present in the video. The noise can be reduced by filters which are all present [There are software for this] and many type of filters such as median ,mean,wiener filter. And The noise model can be build to add noise to the video there are many matlab code as well as software also there. Gaussian ...


Only top voted, non community-wiki answers of a minimum length are eligible