日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

图像为什么能相加

發(fā)布時間:2025/3/20 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像为什么能相加 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

我們知道2個矩陣是可以執(zhí)行加法運算的,那2個圖像能不能相加呢?當(dāng)然是可以的。前面提到,圖像就是函數(shù),函數(shù)可以相加,圖像當(dāng)然也可以相加。

我們知道2個矩陣相加必須是同一維度的,即行列相同,圖像當(dāng)然也一樣,即寬度和高度相同。

我們看下面2副圖像:

import cv2 boats = cv2.imread("boats.bmp", 0) goldhill = cv2.imread("goldhill.bmp", 0) print(boats.shape) print(goldhill.shape)

輸出結(jié)果:

(576, 720) (576, 720)

可以看出,這2副圖像的寬度和高度分別是720和576,大小是一致的。2個圖像相加就是2個矩陣相加。

unite = boats + goldhill cv2.imshow("unite", unite) cv2.waitKey()

輸出結(jié)果:

不怎么樣嘛!白塊,黑塊怎么那么多!有的地方變白了,有的地方變黑了。what’s wrong?

我們知道,圖像的強度取值區(qū)間是[0, 255],opencv的圖像類型是uint8類型。而numpy的矩陣加法是一種模(mod)操作,即200+60=260 % 256 = 4,所以該亮的地方反而暗淡了。

opencv自帶有圖像加法操作運算函數(shù):add(x, y)。add使用的是飽和操作,即200+60=260->255。所以使用opencv自帶的add()函數(shù)效果會更好。

另外,2副圖像相加,我們實際上需要的2副圖像相對位置強度的平均值,因此在相加前,需要各除以2,然后再相加(注意要整除)。

unite = cv2.add(boats // 2 , goldhill // 2) cv2.imshow("unite", unite) cv2.waitKey()

我們知道,除以2和乘以0.5是等價的。乘以0.5是一個數(shù)乘運算,也就是說,圖像自身還可以進行這種運算(注意乘以浮點數(shù)后矩陣類型發(fā)生了改變,而opencv的圖像矩陣必須轉(zhuǎn)換成為uint8類型才能正常顯示)。

boats20 = 0.2 * boats boats20 = boats20.astype("uint8") cv2.imshow("boats20", boats20) cv2.waitKey()

輸出結(jié)果:

可以看到,整體效果暗淡了很多。因為所有的像素點的值都乘以了0.2,強度變成了原來的20%。如果乘的數(shù)值小于1,圖像整體就變暗,如果乘的數(shù)值大于1,整體就變亮。

這給了我們混合2張圖像的一種比率調(diào)和方法,例如最前面2張圖,我們想要看到更多的船(注意為確保2張圖像的混合值小于255,系數(shù)之和應(yīng)保持等于1)。

unite = 0.75 * boats + 0.25 * goldhill unite = unite.astype("uint8") cv2.imshow("unite", unite) cv2.waitKey()

當(dāng)然,opencv已經(jīng)為我們準備好了函數(shù)addWeighted
()。代碼如下,效果是一樣的。

unite = cv2.addWeighted(boats, 0.75, goldhill, 0.25, 0) cv2.imshow("unite", unite) cv2.waitKey()

那么:圖像為什么要相加呢?為了混合(blend)2張圖像。

實質(zhì)上,圖像相加還有一個用途:降噪。同一場景的不同時間采集圖像通過相加平均后去除噪聲,這個后面再講。

總結(jié)

以上是生活随笔為你收集整理的图像为什么能相加的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。