日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图像为什么能相加

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

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

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

我們看下面2副圖像:

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

輸出結果:

(576, 720) (576, 720)

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

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

輸出結果:

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

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

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

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

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

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

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

輸出結果:

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

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

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

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

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

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

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

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。