[論文閱讀] 顏色遷移-N維pdf遷移

yfor發表於2022-11-26

[論文閱讀] 顏色遷移-N維pdf遷移

文章: N-Dimensional Probability Density Function Transfer and its Application to Colour Transfer, [paper ][code]

1-演算法原理

簡單來說, 本文將影像看作是隨機變數的一組樣本, 影像之間的顏色遷移可以看作是樣本之間分佈的遷移. 因而本文的方法就是尋找樣本分佈之間的遷移方法.
如下圖所示為文中給出的2d pdf遷移方法的示例.

2d pdf遷移示例

具體的, 本文演算法步驟如下所示:

pdf遷移演算法流程

下面就我個人理解進行說明下:

  1. 第一步是初始化, 可以看到, 本文是在rgb空間進行處理的, 且是使用迭代的方法, 因而處理過程中x是不斷變化的
  2. 第二大步是演算法核心, 演算法迭代, 查詢對映關係, 具體的
  3. 使用旋轉矩陣R對樣本x和y進行處理, 將其變換到新的座標系, 對應上圖中的步驟3
  4. 在新的座標系, 對每個軸尋找1維的pdf對映, 對應上圖中的步驟5
  5. 對影像進行對映, 得到當前步驟處理後的影像, 對應上圖中的步驟6
  6. 處理完後, 對映回原始座標系, 對應上圖中的步驟7
  7. 重複步驟2-5, 得到最終的影像.

2-演算法核心

本文的目的是N維pdf的遷移, 但對於高維的pdf遷移是比較困難的, 因而本文將其轉換為1維的遷移. 因此本文有2個方面的問題需要解決: 一是1維pdf如何遷移; 二是如何轉換為1維pdf.

2.1-1D pdf transfer

本文介紹了一種方法, 如下所示, Cx 和 Cy 分別為累積機率分佈函式.

1d pdf transfer function
這種方法是 Digital Image Processing 書中的方法, 我覺得有點類似直方圖均衡或者直方圖規定化(直方圖匹配).
程式碼中給出的實現是使用插值演算法實現的, 作者給出的實現是使用matlab的, 其中PX為原始影像某個軸的累積機率分佈, PY為目標影像某個軸的累積機率分佈

f = interp1(PY, 0:nbins-1, PX, 'linear');

2.2-rotation matrix R

本文使用旋轉矩陣R將原始樣本變換到新的座標系, 然後對新座標系的每個軸進行1d transfer. 之所有要使用旋轉矩陣, 個人以為的原因是(可能並不準確):

  1. 樣本分佈比較複雜, 原始座標系(RGB空間)中的遷移不能實現準確的pdf匹配
  2. pdf的遷移存在大量非線性處理, 原始座標系(RGB空間)可能不足以表達
  3. 原始座標系變換, 拉伸幅度可能過大, 導致影像顏色異常, 變換到新的高維座標系後, 每個軸的變化變小, 可以減少拉伸幅度

因而旋轉矩陣R的選擇比較關鍵, 文中測試了幾種R的選擇方法, 最後發現使用隨機的方法, 效果最好, 如下所示:

R對比結果

旋轉矩陣R的大小為 m*3, 根據文章中的說法, m越大pdf匹配越精確, 但速度也越慢. 程式碼中給出的實現使用m=6, 如下所示.

R{1} = [1 0 0; 0 1 0; 0 0 1; 2/3 2/3 -1/3; 2/3 -1/3 2/3; -1/3 2/3 2/3];
for i=2:nb_iterations
	R{i} = R{1} * orth(randn(3,3));
end

這裡沒有看懂, 直接給R隨機賦值不行嗎?

3-演算法效果

如下圖所示為文章中給出的效果.

N-D color transfer

相關文章