錯誤圖
我用python復現C++的多解析度融合時,因為資料型別使用不當,最終產生融合失敗的情況,如下圖,影像融合后,像素亮度值很高,產生很白的情況,

分析
- 首先,構建完兩幅鑲嵌影像的拉普拉斯金子塔,如左圖高斯金子塔影像,可以看出紋理資訊,沒有錯,

- 對兩個普拉斯金子塔中的影像分別進行融合,結果圖如下,問題來了,融合后的影像從上圖的淺色紋理變成了像素值很高的影像,融合出錯了,

- 試了很多方法,最終發現opencv讀取的影像是unit8,即無符號整型,在融合前,只對影像進行了下采樣,上采樣,相減操作,并沒涉及到像素值越界損失的情況 ,但是當對影像進行拉普拉斯融合時,像素值相加后會有很多大于255的值,它們都會被無符號整型約束到0-225內,最后疊加后,影像只會越來越亮,即上圖所示,
解決
只用將影像轉化為浮點型,
img.astype(np.float32) img = img/255.0
像素疊加才不會損失值,最后imshow時,會歸一化到255,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/378635.html
標籤:其他
上一篇:Scala-如何使用計數器在回圈中從list_a復制到list_b
下一篇:python批量修改檔案名
