為什麼圖片被壓縮多次後會變綠,文字周圍會出現噪點?
12-26
比如說這張,不過這個問題我真百度不出來了。
想想應該是反覆壓縮圖片變成這樣了,但是什麼壓縮原理導致變綠?是因為某款軟體,還是某個平台,還是某個圖片格式?
很奇怪為什麼白色會壓縮成綠色,還有為什麼文字旁邊會出現很多噪點?
可能的原因,我沒細看。。。
https://books.google.com/books?id=fvSbCgAAQBAJpg=PA124lpg=PA124dq=jpeg+compress+turn+to+greensource=blots=HSbULDkU3ksig=ch5q_UsCNhZ7xuJfg4GITiNYlQ0hl=ensa=Xved=0ahUKEwiUy-eZpJ7KAhXIbT4KHbxgBgMQ6AEIUTAH#v=onepageq=jpeg%20compress%20turn%20to%20greenf=false(gfw認證資源)
JPEG compression divides images into 8×8 blocks of pixels that are ... more blue and less green; turn up Cr and the screen becomes more red and less green.
應該是jpg壓縮。所謂有損的圖像壓縮都是減掉高頻部分,jpg是先小波變換,你可以理解為傅立葉變換,本質上是差不多的。然後剪掉高頻的部分,因為人眼對高頻部分相對不敏感。什麼是高頻的部分呢,就是圖片里的各種邊緣,顏色明暗變化比較激烈的地方。你的例子里就是文字邊緣。正因為這一部分的在頻譜上被去掉了,變換回時域就會在文字周圍產生失真。至於為什麼會變綠這個我就不太了解,我猜測和你的壓縮比太高有關。壓縮比過高導致頻譜丟失太多,失真已經蔓延到低頻區也就是大面積的白色背景。
這是 Android 圖像庫的一個 bug,
標準的 JPEG 在做色彩空間轉換的時候,會用至少 16 比特精度,
Android 圖快只用了 8 比特。
這個 bug 同時也影響了 Chrome 瀏覽器。
這個問題在 Android 7.0 和 Chrome 52 里修復了。
參見 Use libjpeg-turbo for YUV-&>RGB conversion in jpeg encoder · google/skia@c7d01d3 · GitHub
想體驗的可以試試我寫的 JPEGreen Simulator
可能圖片自身就不是純白色,然後在壓縮的時候,不同壓縮的時候,會將相近的顏色轉化為同一種顏色,轉化的程度在於採用不同程度的色表。當採用不同色表反覆壓縮後,就可能在一次次壓縮中,使得顏色失真。至於偏綠,可能是色表本身演算法導致的問題吧
我又想了想,可能還和放大縮小的時候,採用的演算法導致出現其他顏色也有關係吧。
非專業,答案僅供參考
相似的是 多次轉載的新聞人像臉會變成一種很難看的洋紅
要看顏色是怎麼存的,
常見的RGB,純白色是紅綠藍全滿,怎麼都不會搞成綠色,
有些很高級的YUV之類的,存的是奇怪的亮度,色度什麼東西,這種東西壓縮起來人眼看著就有點詭異了,
以上顯然非專業回答……
這個綠色好熟悉,記得是以前常說的護眼綠,原圖就這樣吧?
推薦閱讀:
※國內有沒有好點的唯美圖片的網站?
※國內有哪些做得比較好的圖片分享類app應用?
※一個老人拿著拐杖,影子是一個軍人,黑白的,外國的?
※在哪裡能下到能列印(源文件)的電影海報?
※有沒有那種比較搞怪復古少女手機殼的圖片推薦?