(score,diff)= structural_similarity(original_gray,tempered_gray,full=True)
diff = (diff*255).astype("uint8")
print("SSIM:{}".format(score))
上面提到的代碼是一個程式的片段,它使用它們的 SSIM 分數匹配兩個影像。我在這里不明白的是 的函式.astype("uint8"),為什么我們要乘以diff255?
uj5u.com熱心網友回復:
想象一個代表灰度(單通道)影像的二維陣列。通常,影像資料可以通過以下兩種方式之一提供給您:
- 像素值是從 0 到 1 的浮點數,或者...
- 像素值是從 0 到 255 的整數。
有時您可能還會看到以 0 到 100 之間的百分比表示的級別,但這與上面的 (1) 基本相同。請注意,(2)只能表示 255 個灰度級,而(1)幾乎是任意精度。
有時您需要 (1) 但有 (2),反之亦然。因為軟體或偏好或其他任何東西。
要從 (1) 轉換為 (2),您必須乘以 255 并確保您有整數。為了使用最少的記憶體,您只需要 8 位整數,但它們有兩種形式:有符號 ( int8,范圍 -128 到 127) 和無符號 ( uint8,范圍 0 到 255)。對于影像,您總是需要未簽名的型別。
要將 (2) 轉換為 (1),您只需除以 255,確保結果可以保存所需精度的浮點數。
因此,在您的代碼中,diff正在從浮點影像轉換為 8 位影像。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/472828.html
下一篇:如何填充影像中的孔或減少噪點?
