Color

Color

「色彩」或「顏色」。人類視覺對於光線的感受結果。

Color Science

人類視覺感受到的色彩。屬於心理學領域。

Color Theory

色彩調配與色彩搭配。屬於美術領域。

Color Imaging🚧

簡介

色彩變成像素。各種顏色,規定其像素數值。

Color Perception

一道光包含許多個。人類看見一道光,卻只感受到一種

光是物理現象,色是人類感知。從光到色的機制尚未釐清。目前只知道:一、人類視覺無法解析每一個波,只能感受混和結果。二、不同的光(不同的波的組合),可以是相同的色。

波有兩個要素:振幅、頻率。一道光的成分,可以畫成頻譜:橫軸是頻率,縱軸是振幅,一個峰是一個波。

振幅平方,決定光能;頻率,決定色相。混和數種光能的宏觀感受,稱作亮度;混和數種色相的宏觀感受,稱作彩度

這只是簡易解釋,人類視覺機制並非如此單純。亮度和彩度會互相干涉,不能分開討論。

人眼擁有四種感光細胞,可以感知頻率和振幅。其中一種無法轉換成彩度,屬於夜視能力,此處不討論。

工程師設計實驗,製造各種頻率、各種振幅的簡諧波,請民眾辨別亮度和彩度。最後以統計學來估計三種感光細胞的感光程度。感光程度偏高之處,是紅綠藍三色。

Color Space

色彩空間。人類視覺所能感知的所有顏色,化作不同數值。

工程師假設,人眼三種感光細胞,得到三個刺激量,決定了顏色。感光細胞,對於不同的頻率,有著不同的感光程度。刺激量,就是每種頻率的光能乘以感光程度之後求和(點積)。

工程師製造各種光,讓受測者觀看並判斷顏色異同。首先以實驗數據反推感光程度,感光程度有時是負數。然後解出三個刺激量,當作顏色的數值。雖然這個假設不符合人眼機制,但是方便統計。

CIE RGB:採用三種波,鎖定頻率(紅綠藍),調整光能,得到一種顏色。然而三種波的組合,少於人類所能感知的所有顏色。於是數值有時是負數,以模擬缺少的顏色,彷彿數學術語「外插」。

CIE XYZ:調整成非負數。

Hunter Lab:數值差距等於顏色差距。年代最早,現已廢棄。

CIE L*u*v*:數值差距等於顏色差距。適合光線混和。

CIE L*a*b*:數值差距等於顏色差距。適合顏料混和。

Color Model

色彩模型。更改數值格式、規定數值範圍,迎合人類作業需求。

RGB:紅、綠、藍。光的三原色。用於螢幕顯示。

CMYK:青、洋紅、黃、黑。顏料的三原色,黑色。用於印刷。

HSL和HSV:色相、飽和度、亮度。用於電腦美術。

HCL:色相、彩度、亮度。用於色彩計算。

YIQ:亮度、從藍到橙程度、從綠到紫程度。用於電視訊號。

YCbCr:亮度、藍色程度、紅色程度。用於電視訊號。

Color Gamut與Gamut Mapping

色域。色彩空間所能表示的顏色範圍。通常只畫出非負數部分,形成一個三角形。

Color Palette與Color Mixing

色盤。記錄一張圖片有哪些顏色。

混色。混合多種顏色,變成新顏色。

Grassmann's Law:對於人眼而言,顏色可以一次內插。

然而目前發明的色彩空間,沒有仔細考慮這件事情,無法藉由顏色數值進行精準的混色。

Color Blending(Color Interpolation)

合成內插。多個顏色的平均顏色(加權平均顏色)。

目前發明的色彩空間,無法進行精準的混色。大家只好另闢蹊徑,發明新觀念合成。選擇一種色彩空間,多個顏色轉換成數值,取平均數(加權平均數)。即是一次內插。

各種色彩空間的合成結果皆不同。

Color Unblending(Color Decomposition)

分解。分解成各種圖層,根據物理性質。

RGB decomposition:任選一種色彩模型,劃分空間。

spectral decomposition:傅立葉轉換,區分頻率。

color blending model:假設像素數值是基本原色的加權平均。解方程式,得到權重。

Color to Grayscale

彩色轉灰階。重新著成灰色,讓圖片依然清楚。

簡易的方式:RGB值更改為平均亮度floor((R+G+B)/3)。缺點是無法區分平均亮度相同的顏色。

高竿的方式:採用其他的色彩模型,例如CIE L*a*b*或HSV,根據人類擅於感受的亮度及彩度,決定灰色深淺。

Grayscale to Color(Colorization)

灰階轉彩色。重新著成彩色,讓圖片依然清楚。

高竿的方法:請讀者自行參考。

一些古老的電視劇、影劇作品,就是如此重新上色的。又例如醫學影像,利用超音波觀察腹中胎兒,只能得到密度資訊,不能得到色彩資訊。密度資訊頂多只能轉換成灰階圖片,所以我們看到的超音波影像大多是灰色的。我們可以利用灰階轉彩色的演算法,將圖片上色,以便清楚地看到胎兒,方便醫生診視。

灰階轉彩色不是電腦專用的技術。在水墨畫當中,也有先上墨色、再上彩色的作畫技巧。

Color Correction🚧

簡介

校正顏色,符合視覺觀感。

Color Appearance

觀感。人類視覺系統,同時觀察各式色彩,實際感受到的色彩。

比方來說,黑色與白色相間,對於白色部分的實際感受是灰色。

Chromatic Adaptation

適應。人類視覺系統,根據亮度暨彩度的對比程度,自動校色。

比方來說,位於室內會自動提升亮度細膩程度,到了戶外則相反。又比方來說,互補色的補償。

color constancy:顏色恆常性。即使光源變化,導致顏色變化,也不會認錯顏色。

optical illusion:視覺錯覺。設計特殊圖片,藉由自動校色的本能,產生錯覺。

下圖看似彩色圖片,但其實是灰階圖片,補上彩色格紋。

下圖看似動畫,但其實是靜畫。

Colorimetric Characterization

校色。各種設備的色彩空間,建立對應關係。

  RGB <---> XYZ <---> RGB
device1             device2

三步驟:

一、gamut mapping。

二、gamma correction:新舊像素值的對應關係。模擬人腦調整亮暗。人腦根據環境亮暗,自動將極亮變暗、極暗變亮。數位相機的硬體,內建此功能。

三、color appearance。

《Image Content Retargeting: Maintaining Color, Tone, and Spatial Consistency》

Color Calibration

校準。重新著色,呈現真實顏色,不受攝影設備、顯示設備影響;同時求出設備的影響力。

Color Balancing

平衡。重新著色,著重於色溫,為了更加清晰。調整相片顏色,去除環境燈光影響,成為真實顏色。比方來說,室內用傳統燈泡,白紙會泛黃;室內用日光燈,白紙會泛藍。白紙理當是白色,以白紙為基準,重新調整圖片當中每一種顏色,移除燈光造成的影響,還原成理想顏色。亦稱「白平衡white balancing」。

Color Grading

調色(調光)。重新著色,著重於色調,為了改變風格。製片必備絕技,屬於美術設計師、調光師的專業。

Color Harmonization

調和。重新著色,視覺上和諧。

Image Dehazing(Image Defogging)

去霧。在濃霧或深水之中,景物會模糊。移除介質造成的影響,還原成理想顏色。

image formation model:假設像素亮度等於景物亮度和光源亮度的加權平均,權重是介質穿透率。套用數學公式,分別估計景物深度和介質穿透率,進而求得景物亮度。

Photo

Photo

Photography / Computational Photography

Photo Imaging🚧

Camera相機

把底片直接放在景物前面,相片最後就是一片亮。古人為了解決這個問題,做了個黑箱、挖了個針孔,嚴格限制光線從景物到底片的行進路線。

針孔導致光線不足,相片最後就是一片陰暗。古人為了解決這個問題,弄了個凸透鏡,讓光線折個彎,聚集光線。

每種顏色的折射率都有些微差異,光線經過透鏡就會色散,相片最後就有色差。古人為了解決這個問題,補了個凹透鏡,讓光線再折個彎,收束光線。

凡事有好就有壞。透鏡可以聚光,卻有像差:相片景物位移扭曲;卻有暈影:相片中心亮、外圍暗。

缺點也可以是優點。例如魚眼鏡頭、LOMO效果。透鏡的缺陷反倒成了藝術,讓許多人心嚮往之。

Depth of Field景深

複習一下高中物理的凸透鏡成像。不在焦距上的景物,光線到達底片就會散開,相片上的景物就會糊掉。

位於焦距上的景物是最清晰的。景物越偏離焦距,相片就越模糊。人類認為還算清晰的區間範圍,稱作景深

調整像深,使之位於景深之內、盡量接近焦距,讓相片清晰,叫做「對焦」。古人為了方便調整像深,搞了個透鏡組。

Aperture光圈、Exposure Time曝光時間

光圈是控制進光量的裝置,大致是圓的。升一檔就是光圈面積變兩倍(光圈直徑變sqrt(2)倍),降一檔就是光圈面積變一半(光圈直徑變1/sqrt(2)倍)。

曝光時間是打開光圈的時間。曝光時間也可以控制進光量。升一檔就是曝光時間變兩倍,降一檔就是曝光時間變一半。

進光量=光圈面積×曝光時間。升檔相片就亮、降檔相片就暗。光圈和曝光時間的檔數相加一樣多,那麼相片差不多一樣亮。

光圈大小,影響靜態景物清晰度。光圈越小,靜態景物越清晰,尤其是不在景深內的景物,令人感覺景深變廣。

曝光時間大小,影響動態景物清晰度。曝光時間越小,動態景物越清晰。

調配光圈和曝光時間,得到不同的視覺感受。散景:光圈超大,故意讓靜態景物不清晰,以凸顯景深範圍內的景物。長曝:曝光時間超大,故意讓動態景物不清晰,產生動態模糊的效果。

Photo Shooting🚧

Focus Stacking

焦點合成。以各種焦距,拍攝多張相片,堆疊成一張清晰相片。

也可以固定焦距,以各種距離,拍攝多張相片,堆疊成一張清晰相片。

Exposure Blending

曝光合成。以各種閃光燈方位,拍攝多張相片,堆疊成一張清晰相片。

效果比Image Sharpening演算法還好。

Focus Sweep(Coded Aaperture)

焦點掃描。以特殊的光圈結構,拍攝一張照片,之後可以漂亮地達成deblurring,得到一張清晰相片。

事先量測各種光圈大小、各種景物深度、各種景物偏角,在底片上面的模糊情況(point spread function),以便設計光圈結構。

http://franchomelendez.com/Uwr/teaching/COMPHO/_LECTURES/L7/coded_photography.html

Flutter Shutter(Coded Exposure)

顫振快門。以特殊的曝光節奏,拍攝一張相片。之後可以漂亮地達成motion deblurring,得到一張清晰相片。

http://stanford.edu/class/ee367/class10.pdf
http://cs.brown.edu/courses/csci1290/lectures/29.pdf

Photo Correction🚧

備忘

3A
Auto Focus:自動對焦。
Auto White Balance:自動白平衡。
Auto Exposure:自動曝光。
PSF estimation
bokeh:散景
vignetting:暈影
blur:模糊
point spread function:點擴散函數

Image Demosaicing‎

去馬賽克。感測器產出的數據,轉換成圖片。RAW格式轉換成RGB格式。

數位相機的感光元件,有RGB三種,分別偵測紅光、綠光、藍光的強度,得到0到255的整數。

感光元件宛如方格棋盤,緊密地排列在平面上,不能互相重疊。最常見的排法叫做Bayer arrangement:

將三種感光元件分開來看,有很多漏洞。demosaicing‎就是指填補這些漏洞的數值。演算法非常多,例如一次內插、中位數。

最後將三個方格棋盤疊起來,每個方格都有RGB值,一個方格對應一個像素,形成彩色相片。

目前正在研發新型態的感光元件,可以同時偵測RGB。不久之後的將來應該就不需要demosaicing‎了。

相機的數學知識:Fourier Optics

http://web.stanford.edu/class/ee368/Handouts/Lectures/2015_Autumn/8-LinearProcessingFiltering_16x9.pdf
page 67-71

Noise Reduction(Denoising)

去除雜訊。攝影器材不完美、周遭環境不理想,導致像素位置或數值改變。例如燈光昏暗時,相片上面多出許多莫名其妙的顏色。

不同的誤差有不同的解決方式,見招拆招。例如salt-and-pepper noise,可以取鄰近像素的中位數;例如quantization noise,可以使用一次內插。更複雜的演算法例如biliteral filternon-local means

Distortion Reduction(Aberration Reduction)

去除像差。透鏡表面不完美、光線介質不均勻,導致像素位置改變,相片景物扭曲變形。

http://www.cs.cmu.edu/~ILIM/projects/IM/globalopt/research_globalopt.html
http://www.cs.cmu.edu/~ILIM/projects/IM/water/research_water.html
http://www.cs.cmu.edu/~ILIM/projects/IM/document_rectification/document_rectification.html

Blur Reduction(Deblurring)

去除模糊。拍攝照片,沒有對焦,導致像素四散疊加。

Motion Blur Reduction(Motion Deblurring)

去除動態模糊。拍攝相片,相機震動搖晃,相機位置不斷改變,導致像素位移並疊加。令相片清晰。

High Dynamic Range Imaging(HDR Imaging)

高動態範圍成像。以各種曝光時間,拍攝多張相片,生成一張符合真實世界亮度的相片。相片的檔案格式從RGB換為RGBE,額外以浮點數儲存亮度。

進階應用有HDR Printing

一個場景當中,光線亮度經常相差好幾個數量級。一張相片當中,像素數值頂多只有0到255。相機拍攝的過程當中,喪失了許多亮度資訊(失真壓縮),現在要盡量還原亮度資訊。

相機拍攝時,光線亮度到像素數值的轉換過程,可以看作是一個函數。幸運的是,一台相機的函數是固定的──商家為了讓拍攝結果穩定一致。不幸的是,每一家相機的函數都不一樣,而且沒有公佈函數──這是商業秘密。

我們的目標是找到反函數!

經典的演算法是選定相機、固定光圈、調整曝光時間,令讓進光量屢次翻倍,各拍攝一張相片。觀察各張相片的同一個像素,得知光線亮度與像素數值的對應關係。

取n個像素,光通量是 E₁ E₂ ... Eₙ
曝光時間一倍 1E₁ ... 1Eₙ
曝光時間兩倍 2E₁ ... 2Eₙ
曝光時間四倍 4E₁ ... 4Eₙ

水平線段區間 [L₀, R₀) [L₁, R₁) ... [L₂₅₅, R₂₅₅)
其中 0 = L₀ < R₀ = L₁ < ... < R₂₅₄ = L₂₅₅ < R₂₅₅ = 10⁶
光通量落在 [L₀, R₀) ,則像素亮度為 0 ,以此類推。

每一張相片可以列出 2n 個不等式。
比如說第一張相片,E₁的像素亮度是20,E₂的像素亮度是24

L₂₀ <= E₁ < R₂₀  ⟹  L₂₀ - E₁ <= 0 , E₁ - L₂₁ < 0
L₂₄ <= E₂ < R₂₄  ⟹  L₂₄ - E₂ <= 0 , E₂ - L₂₅ < 0

有p種曝光時間、p張相片,得以列出 2np 個不等式
再加上區間 L₀ < L₁ < ... < L₂₅₅ < R₂₅₅ ,一共 255 個不等式
實施一次規劃演算法,求可行解!
另外還可以設定區間長度最少是d,
例如 L₀ + d < L₁ 這樣,以增加可行解的魯棒程度。

求出所有未知數,得到 [L₀, R₀) ... [L₂₅₅, R₂₅₅) 對 E₁...Eₙ 的函數。
最後套用單調三次內插,變成一對一函數,以求出反函數,
就可以替圖片上每個像素找到E了。

多取幾個像素,就可以解方程式,得到一個大概的對應表。拍越多照、取越多像素,對應表就越準確。但是也得考量執行時間,畢竟民眾希望馬上拍照馬上得到相片。n=14點像素是不錯的數字。

想要量測確實的彩度與亮度,可以使用亮度儀。只不過這裡的主角是數位相機。

Tone Mapping

色調映射。調整相片亮度,盡量接近人眼感受,讓亮處細節、暗處細節同時都能看清楚。此技術可以用在相片、液晶顯示器。

人類視覺,感知的亮度範圍是10⁻⁶ ~ 10⁶ cd/m²,橫跨12個數量級。人眼與人腦可以迅速調節亮度,同時看清楚亮處與暗處。甚至套用特殊視覺效果

一張相片,像素數值只有0到255,共256種離散數值。相片往往是亮的地方一片亮、暗的地方一片暗。

目標是讓數位相機與人眼一樣。

演算法非常多。例如先做HDR Imaging,再做biliteral filter

Video

Video

影片可以想成是很多張圖片。

使用C/C++處理影片

C與C++本身沒有處理影片的函式庫。

你可以土法煉鋼,選擇一種影片檔案格式,例如MP4WebM維基百科整理了一份詳細列表,研讀其規格書,設計程式讀取影片擷取像素。

你也可以拍手煉成,直接使用現成的函式庫,例如Bento4,研讀其使用說明書,呼叫函式讀取影片擷取像素。

使用C/C++與作業系統處理影片

我沒有研究。

大家可以直接使用功能齊全的函式庫。圖片影片處理函式庫OpenCV、視訊處理函式庫FFmpeg

使用HTML與JavaScript處理影片

將影片畫在網頁上,需要一連串步驟。

首先以HTML建立<video>和<canvas>。然後以JavaScript擷取<video>和<canvas>。

<video>是影片播放器。我們無法直接從<video>得到像素。

必須先利用drawImage()將<video>的圖片畫在<canvas>上面,再利用getImageData()得到像素。其成員.data是一條一維陣列,依序存放每個像素的RGBA值。

修改好每個像素的數值之後,最後利用putImageData()將像素重新畫在<canvas>上面,便大功告成了。

播放<video>的過程當中,隨時將<video>當前時刻的畫面,即時畫在<canvas>上面。

監聽<video>的事件:開始播放、暫停播放、播放完畢。開始播放,則建立動畫幀。暫停播放、播放完畢,則終止動畫幀。

取得影片尺寸,正式做法是監聽loadedmetadata事件。然而此例當中卻沒有作用。原因也許是play搶先於loadedmetadata。

學會擷取像素之後,就能做一些複雜的實驗了,例如修改色調。

點擊右上角小圖示,可以查看關鍵程式碼。

使用現成軟體處理影片

Video的演算法,早已經製作成套裝軟體。完全不需要學習程式語言與數學,只需要仔細閱讀軟體使用說明書。發揮創意,就能做出各種影片特效。

商業軟體,例如Microsoft PhotosApple iMovie。開源軟體,例如OpenShot維基百科整理了一份詳細列表

Image Coding

簡介

像素變成碼。像素數值,視作純粹的數字、訊號、碼。

圖片的數學運算:Vector與Linear Transformation

一張圖片,可以表示成RGB三條向量。

像素的運算,想成是函數變換。若是線性變換,可以寫成矩陣。

線性變換有許多優美的性質。例如矩陣加減,等價於新圖片加減。例如一連串線性變換,可以簡化成一次線性變換;多個矩陣預先相乘(複合),簡化成一個矩陣。

Image Representation

重新表示。以簡略數據,紀錄圖片,用於特徵描述、辨識。

eigenimage:圖片表示成向量。兩兩點積,求共相關矩陣(實數對稱矩陣),得到特徵值(實數)、特徵基底(正規正交矩陣)。

sparse coding:圖片表示成向量。求一套基底,其線性組合涵蓋所有向量(圖片)。處理一張圖片:解Ax = b,A的一個直條是一張樣式圖片,x是加權平均數,b是一張完整圖片,請最小化x的L₁-norm。處理多張圖片:加總起來,或者把向量推廣成矩陣。

圖片的數學運算:Wave

一張圖片,可以分解成大量二維簡諧波。

聲音處理是一維訊號,圖片處理是二維訊號,道理相通。

聲音處理有「時域time domain」與「頻域frequency domain」。實施正向Fourier transform,時域轉頻域。實施逆向Fourier transform,頻域轉時域。時間複雜度O(NlogN)。

圖片處理有「空域spatial domain」與「頻域frequency domain」。實施正向2D Fourier transform,空域轉頻域。實施逆向2D Fourier transform,頻域轉空域。時間複雜度O(XYlogXY)。

空域當中,平均數具備平滑效果,聲音處理得齆聲,圖片處理得霧化;相鄰差具備差異效果,聲音處理得尖聲,圖片處理得邊緣。

頻域當中,低頻數值具備主體,聲音處理得母音,圖片處理得形體;高頻數值具備細節,聲音處理得子音,圖片處理得特徵。

聲音處理,頻域符合人類感知;圖片處理,空域符合人類感知。因此圖片處理不適合採用頻域。早期的圖片處理教科書,是訊號學者主導,所以才會非常強調頻域。

如果不關心圖片內涵,只想把圖片當作訊號來處理,那麼頻域就可發揮功效。

頻域可以畫成圖片,但是沒有實際用處。

教科書很喜歡提供頻域的圖片。然而頻域的圖片毫無實際用處。頻域之所以畫成圖片,只是為了不讓書上只有文字。書上有張圖片,讀者心情也會比較好。

繪製步驟如下:

一、RGB三者分開處理。

二、增加圖片長寬,成為正方形,甚至成為2的次方。增加的部分,像素數值補零。

三、實施二維傅立葉轉換。

四、計算複數長度。傅立葉轉換結果是複數。大家習慣畫出複數長度,代表圖片強度。

五、取log。傅立葉轉換結果數值範圍很大,但是圖片像素範圍只有0到255,必須調整數值。因為人類對聲音強度、光線強度的敏感程度大略是取log,所以此處的圖片強度也取log。理由很瞎。

六、循環位移半個圖片長寬,將低頻部分挪至圖片中央。原本圖片,四角低頻、中央高頻,四角亮、中央暗。把亮的部分挪至圖片中央,比較美觀。

Image Frequency Analysis

頻率分析。圖片硬是分解成二維簡諧波,觀察每種頻率的強度。

Fourier transform:分解成簡諧波。

Gabor transform:先套用Gaussian function,再做Fourier transform。據說比較接近人類視覺機制。

Image Frequency Filtering

頻率濾波。圖片從空域轉成頻域,在頻域使用濾波器。

homomorphic filtering:ln→FFT→filter→IFFT→exp。假設像素亮度等於景物亮度和光源亮度的總和,intensity = illumiance + reflection。景物亮度,空域變化柔和,頻域得低頻。光源亮度,空域變化劇烈,頻域得高頻。以濾波器篩選低頻,得到景物亮度。但是這個推理非常牽強。

Image Noise

雜訊。像素值異動、有誤差,不是原始數值。簡單起見,習慣假設:每個像素獨立產生雜訊,不會互相影響。

不同的雜訊,有不同的補救方式。兵來將擋、水來土掩。

salt-and-pepper noise:各個像素以固定機率丟失。要嘛正常,要嘛變成0或255。數位傳輸經常出現。破法是median filter。

Gaussian noise:相素值添加誤差,誤差呈高斯分布,即是Gaussian error。類比傳輸經常出現。破法是mean filter。

clipped noise:感光設備收集過多亮度,數字爆表,僅得255。好比電玩遊戲傷害上限9999。亮處攝影經常出現。無法破解。

shot noise:感光設備偶然加收一些亮度。好比公車正要離站,剛好有人陸續趕上車,公車無法立即關門、準時行駛。即是Poisson error。暗處攝影經常出現。破法是mean filter。

quantization noise:像素值捨去小數變成整數,導致誤差。我們合理假設,小數部分任何可能性一律均等,呈uniform distribution。捨去小數,即是減去一個隨機數字,即是添加誤差,即是uniform error。數位設備必然出現。不必破解。

Image Denoising

去雜訊、去噪。訊號受干擾而混亂,必須還原訊號。干擾假定為某種noise或者某種filter。

Wiener deconvolution:假設是mean filter。

Richardson–Lucy deconvolution:假設位移誤差是Gaussian noise,亮度誤差是Poisson noise。

Image Steganography(Digital Watermarking)

隱寫、浮水印。訊息隱藏至圖片當中,無法察覺外觀差異。用來判斷圖片是否被私下改造。

LSB steganography:隱藏至每個像素數值的最低位元。

Image Compression

簡介

壓縮圖片,減少儲存容量,但是要盡量避免畫面失真

Texture Compression

壓縮。事先調整像素數值,以便增進壓縮效果。

S3 texture compression (S3TC):4x4區塊之內,保留2種顏色,以經驗公式衍生2種顏色。

PowerVR texture compression (PVRTC):3張小圖片。兩張是低頻,一張是高頻餘數。

Image Compression

壓縮。主要用途是圖片檔案格式

BMP:無壓縮。添加表頭。

PNG:無失真壓縮。delta filtering = finite difference、DEFLATE = LZ77 + Huffman、CRC。

JPEG:失真壓縮。8x8、RGB2YUV、DCT(KLT if 1-markovian)、quantization、zig-zag、Huffman。

GIF:無失真壓縮。用於簡短動畫,只有256色。LZW。已退流行。

ICO:無失真壓縮。用於Windows作業系統的圖示,後來又用於網站圖示。包裝BMP或PNG。已退流行。

DjVu:失真壓縮。用於文件。分三層:前景、背景、文字。前景、背景,IW44。文字視作黑白圖片,JB2。已退流行。

WebP:兩者都有。套用了影片壓縮標準VP8。

AVIF:兩者都有。套用了影片壓縮標準AV1。

JPEG XL:兩者都有。改良了圖片壓縮標準JPEG。

Video Compression

壓縮。主要用途是影片檔案格式

影片壓縮標準的兩大陣營:

MPEG的MPEG系列,目前版本是H.266教學文章

Google/AOMedia的VP系列,目前版本是AV1教學文章

MPEG系列是國際標準。影片檔案格式幾乎皆是源自它。

Video Container Format與Video Coding Format

影片檔案格式(影片封裝格式)不等於影片壓縮標準(影片編碼格式)

影片檔案格式不是只有影片而已。影片檔案格式通常內含三樣東西:影片、聲音、字幕。分別屬於三個不同領域。

而一種圖片檔案格式,通常內含唯一一張圖片。

一種影片檔案格式,通常支援多種影片壓縮標準、多種聲音壓縮標準、多種字幕壓縮標準,然後設定成其中一種。

而一種圖片檔案格式,通常自身即為一種圖片壓縮標準。

一種影片壓縮標準,通常有多種團隊實作程式碼、製作函式庫,這些函式庫稱作「編解碼器codec」。

想要錄製播放影片,需要編解碼器。開發編解碼器,通常需要付費給影片壓縮標準制訂者。安裝編解碼器,通常需要付費給編解碼器開發者。當然也有免費的,當然一分錢一分貨。

而圖片壓縮標準、圖片編解碼器,通常是公司自己制定、自己實作,用於自家產品。公司為了推廣產品,習慣公開圖片壓縮標準、允許大眾逕自實作圖片編解碼器。當然也就沒人買賣圖片壓縮標準、圖片編解碼器。

Image Transmission

傳輸。傳送圖片,儘量不失真。

progressive transmission:設定成不同解析度,分別傳輸。

Video Streaming

串流。傳送影片,儘量不延遲。

進階應用有廣播

我沒有找到相關資料。KKStream的技術經理回答如下。

=== conferences
* Streaming Media West / Streaming Media East
* Demuxed
* Video Tech meetups (e.g. Taipei Video Tech, Tokyo Video Tech, Sydney Video
Tech, ... 很多)

=== academic connferences
* ACM MM

=== hot topics
* (ultra) low latency (live) streaming
* edge computing for video streaming
video streaming protocol
ES, PES, PS, TS
DVB-IPTV, HTTP Live Streaming
https://en.wikipedia.org/wiki/IP_over_DVB
https://en.wikipedia.org/wiki/Adaptive_bitrate_streaming
https://en.wikipedia.org/wiki/HTTP_Live_Streaming
RTSP / RTP
https://en.wikipedia.org/wiki/Real-time_Transport_Protocol