2016-10-05 20 views
0

我想獲得儘可能少失真的圖像流(無噪聲減少等),而無需處理RAW輸出。 我正在使用兩個流(一個使用已棄用的camera),一個用於預覽,另一個用於處理。我理解camera2 api,但是我想知道在將傳感器輸出安裝到表面時使用了哪種上採樣/下采樣?安卓相機2:什麼樣的上採樣/下采樣是適合我的流?

更具體地說,我正在縮放圖像,並根據有關cropping的camera2文檔和references

非原始流,任何額外的每個流的種植工作將最大限度地流的最後像素區域。

整體概念是很容易理解,但它也提到:

輸出流使用這個矩形來產生它們的輸出,如果有必要,以保持該流的寬高比裁剪爲更小的區域,然後縮放傳感器輸入以匹配輸出的配置分辨率。

但我一直沒能找到任何有關這種縮放的信息。使用哪種方法(基於濾波器,雙三次,邊緣定向等)?有沒有辦法獲得這些信息?有沒有一種方法可以真正選擇使用哪一種?

關於已棄用的camera,我猜測縮放比較簡單,因爲它可能相當於SCALER_CROPPING_TYPE_CENTER_ONLY只有一組有限的裁剪區域對應於曝光的縮放比例。但圖像縮放是否與camera2相同?如果有人能說出一些光,我會很開心。


真實生活中的例子

相機傳感器:5312x2988(16:9)

我希望有一個4倍變焦使作物區域應該是(1992,1120,1328,747) (順便說一句奇數尺寸會發生什麼?例如SCALER_CROPPING_TYPE_CENTER_ONLY設備?)

現在我有一個表面大小(1920,1080),作物面積和流量比適合,但1328x747值必須轉換爲填充1920x1080表面。這種轉變的本質就是我想知道的。

回答

0

使用的縮放算法取決於設備;通常爲了功率效率和速度,通常在攝像機圖像信號處理器(ISP)管線末端的硬件塊中完成縮放。

因此,你通常不能依賴它是任何特定類型的縮放或過濾。不幸的是,如果你想了解整個處理流程,你必須從RAW開始並自己實現。

如果您使用的是相同的設備,舊的相機API和新的camera2 API會與同一個硬件抽象層以及相同的硬件縮放器進行對話,所以縮放輸出通常會匹配相同的分辨率。 (除了LEGACY級別的設備,其中camera2可能需要額外的基於GPU的縮放比例,這將是雙線性下采樣 - 但您並不真正知道這將適用於何時)。

+0

我沒有希望有人真正回答我的問題,也沒有期待縮放方法被髮布或記錄,但那時你永遠不知道....所以感謝您花時間和確認我的想法。 – Dude