簡體   English   中英

重新縮放圖像以獲得 0 到 255 之間的值

[英]Rescaling image to get values between 0 and 255

從此處獲取的一段代碼試圖繪制卷積神經網絡的中間輸出。 以這種方式獲取和重新縮放輸出:

if channel_image.sum()!=0:
    channel_image -= channel_image.mean()
    channel_image /= channel_image.std()
    channel_image *= 64
    channel_image += 128
            
channel_image = np.clip(channel_image, 0, 255).astype("uint8")

這個轉換中的一切都非常清楚,除了乘以64 :那是為了什么? 那是經驗值嗎?

減去均值並除以標准差后,您就計算出了通道圖像值的 Z 分數。

看起來他們選擇了 +/- 2 作為值顯示為與平均值的標准偏差數:

2*64 + 128 = 256
-2*64 + 128 = 0

因此,乘以 64 會將值縮放到 -128 和 +128 之間,然后移動 128 會將值移動到 0 到 256 之間。

+/-2 標准偏差之外的任何值都將被以下行截斷:

np.clip(channel_image, 0, 255).astype("uint8")

實際上 64 值應該計算如下:

def multiplier(num_std_deviations):
    return 256/(num_std_deviations*2)

除以標准差后,值在一個小范圍內(對於正態分布,幾乎所有值都在 [-3,3] 范圍內)。 它們被重新縮放以更好地填充 [-128,127] 范圍。

暫無
暫無

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

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