有些數據集會備註對圖像做了如下處理:
Auto-orientation of pixel data (with EXIF-orientation stripping)。
應該如何理解這個處理到底是做了什麼呢?
什麼是EXIF?
EXIF用來規定除圖片內容以外的附加詳細信息的一種文件格式,比如圖片的屬性信息和拍攝數據。
稱爲可交換圖像文件格式(英語:Exchangeable image file format,官方簡稱Exif)。
Exif可以附加於JPEG、TIFF、RIFF等文件之中,但不支持png,webp等圖片格式。
以JPEG爲例,我們知道,JPEG是一種對圖片進行編碼和解碼的標準。
但通常,一個JPEG文件不僅包含了圖片內容的信息,還包含了該圖片的屬性信息和拍攝數據,比如圖片拍攝地理座標、時間戳、相機相關信息等。
EXIF規定了上述這些附加信息,應該以何種方式存儲於JPEG等文件中。
這也是爲何大家顧慮分享手機拍攝的原圖會泄露個人隱私。
什麼是EXIF orientation?
EXIF orientation是指代圖片拍攝時相機的旋轉信息。圖片瀏覽器需根據這個參數,將圖片自動旋轉到正確方向。
爲何需要有相機orientation的信息?
因爲人們習慣看到的拍攝場景,是符合萬有引力的、正向的圖片,但相機只負責拍攝場景,並不能理解拍攝內容,所以需要將相機orientation信息記錄下來,以便在圖片解碼時對圖片方向進行補償。
比如,下圖中,左邊是瀏覽器自動校正的圖片,右邊是實際上相機有旋轉的拍攝的圖片。(圖片來源:http://dn-odum9helk.qbox.me/exif.png,http://dn-odum9helk.qbox.me/exif.png?imageMogr2/strip)
根據參考文章,上述圖片的EXIF信息如下:
{"ColorSpace":{"val":"sRGB","type":3},"ExifVersion":{"val":"Exif Version 2.1","type":7},"FlashPixVersion":{"val":"FlashPix Version 1.0","type":7},"Orientation":{"val":"Right-top","type":3},"PixelXDimension":{"val":"3264","type":4},"PixelYDimension":{"val":"2448","type":4},"ResolutionUnit":{"val":"Inch","type":3},"XResolution":{"val":"72","type":5},"YResolution":{"val":"72","type":5}}
EXIF orientation tag的值是“right-top”,即圖片拍攝時,相機的旋轉信息是“right-top”,則通過查閱文檔,可知,相機是逆時針旋轉了90°的基礎上拍攝的。
需知,並非所有的解碼器都能自動糾正,有些解碼器直接忽視了exif orientation信息,從而導致所顯示的圖片方向錯誤。
如此,就可以解答本文一開始的數據集預處理問題了。
以上。