今天我們一起學習的是OpenCV中的圖像的計算,在圖像計算中,分為像素級運算和代數運算這兩大類,今天我們借助OpenCV中的函數一起來看看這些運算。
一:圖像的像素級運算
像素級運算中非常常用的就是點運算,之前的文章中說過的讓一張圖片反轉顏色其實就是點運算來實現的。點運算我們一般將其分為三大類:
線性點運算、非線性點運算、映射表點運算
點運算有以下的幾個特點:
1:點運算針對圖像中的每一個像素灰度,獨立地進行灰度值的改變,換句話說,點運算實際上是一種在灰度程度上進行的變換,這是前提。
2:輸出圖像中每個像素點的灰度值,僅取決于相應輸入像素點的值
3:點運算不改變圖像內的空間關系
4:從像素到像素的操作
5:點運算可完全由灰度變換函數或灰度映射表確定
具體的例子可以參照之前的文章進行試驗,這里不再贅述
二:代數運算
代數運算最常見的是加、減、乘、除這四類,整個代數運算對圖片的要求挺高的,首先要尺寸大小相同,然后圖片的體積不能太大,如果太大運算起來很費時間。
1. 加法
加法運算的計算公式如下:
C(x,y) = A(x,y) + B(x,y)
其實就是將A,B兩張圖片每個像素值相加得到一張新的圖片,圖像加法在圖像合成方面用的比較廣泛。假如我們將兩個圖像f(x,y)和h(x,y)進行以下處理:
g(x,y) = 0.5f(x,y) + 0.5h(x,y)
這樣圖像會得到類似二次曝光的效果
將這個公式進行推廣:
g(x,y) = αf(x,y) + βh(x,y) 其中α+β= 1
然后合理的調節α,β的值,我們可以將兩張圖片進行合成,并且效果很不錯
接下來我們使用OpenCV來進行一下操作:
在OpenCV中提供了一些圖片進行試驗:
找到你相應的安裝OpenCV的路徑,然后按照圖片進行查找即可:
在這里我們選擇其中的LinuxLogo和WindowsLogo進行運算,我們定義一個函數,按照以下調用即可:
結果如下:
2. 減法
C(x,y) = A(x,y) - B(x,y)
減法我們可以看做是加法的反例,減法主要用來去除不需要的疊加性圖案
或者檢測同一場景兩幅圖像之間的變化。
調用方法如下:
讓我們看看結果:
3. 乘法
C(x,y) = A(x,y)×B(x,y) 乘法主要用在圖像的局部顯示,同時可以用二值蒙板圖像與原圖像做乘法,通常來說就是加濾鏡。。。 OpenCV中乘除法的操作方法:
結果如下:
這里說一下為什么不寫一下除法,因為每個像素點取值0-255,一相除以后沒有多少數值了,所呈現出來的圖像也沒有什么有效信息,所以我們一般不怎么使用除法。
三:邏輯運算(求反、異或、或、與) 1)求反的定義 g(x,y) = R - f(x,y) R為f(x, y)的灰度級。 可以應用在: 獲得一個圖像的負像 獲得一個子圖像的補圖像 2)異或運算的定義 g(x,y) = f(x,y) or h(x,y) 主要應用舉例 獲得相交子圖像 3)與運算的定義 g(x,y) = f(x,y) and h(x,y) 主要應用 求兩個子圖像的相交子圖 在OpenCV中的操作如下:
得到的結果如下:
四:尾巴 在上邊的一些操作中,可以看到我基本沒有寫代碼,直接調用OpenCV即可,如今的代碼庫多種多樣,開源的數不勝數,可以說讓我們進入了傻瓜編程階段,并且在OpenCV中,越來越多的函數命名更加直接,極大地簡化了我們的操作,我們可以有更多的精力放在算法優化上,而不是在寫無窮無盡的程序。其實數字圖像處理本身的算法理論很簡單,但是一但實際操作起來,問題反而不少,各位希望可以多找幾幅圖像嘗試一下,自己分析一下,相信會有更多的收獲! 在中華文化里,鼠乃十二生肖之首,進入鼠年就代表著開始新一輪生肖紀年,也寓意著新的開端,給大家提前拜一個早年!奮斗創造歷史,實干成就未來,希望和大家在新的一年里一起努力,共同成長,也感謝大家的支持!
責任編輯:xj
原文標題:【CV學習筆記】圖像的計算
文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
-
圖像
+關注
關注
2文章
1089瀏覽量
40575 -
計算
+關注
關注
2文章
451瀏覽量
38868 -
CV
+關注
關注
0文章
53瀏覽量
16907
原文標題:【CV學習筆記】圖像的計算
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論