簡體   English   中英

原始 CR2 圖像旋轉並保存未壓縮以訪問像素 RGB

[英]Raw CR2 image rotate and save uncompressed to access pixel RGBs

這是一個有缺陷的問題。 我投票關閉或刪除它。 出於我的目的,我應該保持原始(或最小插值)格式。

我需要先將 CR2 圖像旋轉幾度,然后從特定位置提取像素 RGB。 這是為了科學,而不是美學,所以我非常關心捕獲值是什么。 這些照片是用 Cannon EOS 5D(大約 2012 年)拍攝的。 我知道如何使用Pillow Image 旋轉和處理圖像(但不知道如何使用原始文件)。 我想我可以自己在內存中轉換像素,但希望不必這樣做。

我的計划是首先使用一些原始圖像處理模塊(如rawpy )讀取 RGB 像素並將其保存為某種未壓縮格式(.tiff?),以便它們盡可能接近捕獲的內容,然后使用Pillow旋轉圖像並重新保存。

但是,每當我使用rawpy讀取和保存 CR2 圖像時,它們甚至與 Photoshop 渲染 CR2 圖像的方式都不匹配。 也不匹配同時拍攝的壓縮 JPG 版本。 例如,太陽的日冕在這三者中都是不同的。

這是我正在做的事情的 MWE:

import sys
import argparse
import rawpy
from PIL import Image as Img

def main():
    parser = argparse.ArgumentParser(description='', formatter_class=argparse.RawTextHelpFormatter)
    parser.add_help = True
    parser.add_argument('filepath', help='a raw image file')
    args = parser.parse_args()

    raw = rawpy.imread(args.filepath)
    rgb = raw.postprocess(use_auto_wb=True)
    #rgb = raw.postprocess(use_camera_wb=True)
    Img.fromarray(rgb).save(args.filepath + '.tiff')
    raw.close()

if __name__ == '__main__':
    main()

這是一個原始的 CR2 圖像
這是同一台相機幾乎同時拍攝的JPG 版本
這是保存到 .tiff w/ use_auto_wb原始結果
這是保存到帶有use_camera_wb的 .tiff 的原始結果

我認為這一切都與“曝光補償”和“白平衡”有關,但老實說,我不是原始圖像的專家。 我不知道我是否只是在做一些愚蠢的事情,或者我應該使用不同的管道來完成我想要做的事情。 我想要最簡單的 Python 管道,用於打開 CR2 並將 RGB 值轉換為未壓縮格式,以便我可以旋轉和提取。 但我現在擔心 CR2 文件中的值是什么,並希望以最准確的方式提取它們。 我想正如下面的評論所暗示的那樣,由於將原始圖像渲染為正片格式所涉及的所有過程,因此沒有正確的方法。

蟒蛇 3.5.2
枕頭 4.3.0
粗糙的 0.13.1
麻木 1.14.2
我知道這些有更新的版本,但我正處於一個幾年的項目中,所以寧願不升級,以免引入細微的變化。

它不適合評論,但......

當您制作“原始”照片時,您基本上會記錄圖像傳感器上未處理和原始的所有信息,以便獲得盡可能多的信息,以便您稍后以全尺寸對圖像進行解釋,使用 Photoshop 或 Lightroom 等復雜軟件的高性能計算機。 當您記錄 JPEG 時,您會放棄大量信息,並允許相機內芯片做出關於白平衡、色彩空間、曝光、剪輯和高光補償以及從 12/14 位轉換的任意決定到 8 位。 沒有任何正確准確的版本,或者正確准確的RGB 信息,這都是主觀的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM