只是在python GIMP中做一個簡單的bump_map操作。但結果有色帶!
import os, glob, sys, time
from gimpfu import *
image = pdb.gimp_file_load(img_path, img_path, run_mode=RUN_NONINTERACTIVE)
gray = pdb.gimp_file_load(gray_path, gray_path, run_mode=RUN_NONINTERACTIVE)
pdb.plug_in_bump_map(image, image.active_layer, gray.active_layer,
135.0, 20.00, 30, 0, 0, 0.0, 0.0, 1, 0, 0)
pdb.file_png_save_defaults(image, image.active_layer, out_path, out_path)
如果洗掉“plug_in_bump_map”操作,則保存的最終結果中沒有色帶。如果我對灰度影像應用高斯模糊,最終結果中的色帶消失了,但留下了令人不快的模糊,我該怎么辦?所有影像都是PNG。

uj5u.com熱心網友回復:
好的,所以它是條帶:)
但是如果你仔細觀察,條帶已經在你的凹凸貼圖中了,這是不可避免的,因為你的 PNG 中只有 256 個級別。
當兩個均勻區域之間的值發生顯著變化且它們之間具有某種線性邊界時,就會出現條帶。所以這兩個緩解措施是
- 在邊界周圍傳播變化:
- 更高精度的影像,所以變化可以小于1/256
- 影像模糊
- 使邊界與眼睛非線性(傳播噪聲)
- 抖動,兩者兼而有之,因為它引入了中間值,但將它們隨機放置。
解決問題的最佳方法是在源頭上,所以如果 openCV 可以計算超過 256 個級別,讓它這樣做并以某種高位深度格式匯出凹凸貼圖(16 位/通道 PNG 可能就足夠了,否則為 TIFF)。
否則,如果您必須從 8 位凹凸貼圖開始:
- 加載 Gimp
- 轉換為高精度(32bit FP 線性)
- 如果您在那時查看直方圖,您仍然只有 256 個值:

- 然后使用 RGB 噪聲過濾器添加“抖動”以擴展值以填充間隙。最好使用直方圖對話框來完成,并調高值直到“頭發梳”結構幾乎消失:

- 您還可以使用傳播噪聲來“搖晃像素”一點(2-3px),這樣過渡就不那么線性了,所以不太明顯:

- 然后您可以應用凹凸貼圖。你用條帶換取一點顆粒感:

- 您可以使用中值模糊減少顆粒度,而不必使用會使影像失去太多清晰度的值。

也可以用選擇性高斯模糊代替步驟 4 和 5。
編輯:試過你的 16bpc:
- 升級到 32 位 FP 線性
- 無需預處理即可應用凹凸貼圖
“原生”結果已經好得多:

可以通過以下方式改進:
- color selection of the "flats" color with a threshold of 0
- Selective Gaussian blur

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/352469.html
上一篇:如何使這個回圈并行且更快?
