一、理論
影象增強演算法的基本原則是「降低低頻區域,突出高頻區域」,以此強化邊緣,達到增強的目的。最簡單的例子就是通過原始影象減去高斯模糊處理後的影象,就能夠將邊緣強化出來。
ace的定義和原理看上去還是比較簡單的。這裡的
和都可以根據影象本身計算出來。而
則需要單獨計算。
可以為單獨的常量,或者通過
來代替。這裡的d是乙個全域性的值,比如平均值。
二、實現
涉及到區域性的運算,自然而然會想到使用卷積的方法。更好的是opencv提供了專門的函式用來做這個工作—blur
文件中寫到:
那麼正是我們想要的結果。
//ace 自適應對比度均衡研究
//by jsxyhelu
//感謝 imageshop
#include"stdafx.h"
#include
#include"opencv2/core/core.hpp"
#include"opencv2/highgui/highgui.hpp"
#include"opencv2/imgproc/imgproc.hpp"
usingnamespacestd;
usingnamespacecv;
//點乘法 elementwisemultiplication
cv::mat ewm(cv:
:mat m1,cv:
:mat m2)
voidmain()
接下來,為了實現
那麼需要計算區域性標準差和全域性均值或方差
前面已經計算出了區域性均值,那麼
tmp = src - meanmask;
varmask = ewm(tmp,tmp);
blur(varmask,varmask,size(50,50)); //varmask為區域性方差
計算出區域性方差
//換算成區域性標準差
varmask.convertto(varmask,cv_32f);
for(inti=
0;i}換算成區域性標準差
meanstddev(src,meanglobal,varglobal); //meanglobal為全域性均值 varglobal為全域性標準差
是opencv提供的全域性均值和標準差計算函式。
全部**進行重構後如下
//ace 自適應對比度均衡研究
//by jsxyhelu
//感謝 imageshop
#include"stdafx.h"
#include
#include"opencv2/core/core.hpp"
#include"opencv2/highgui/highgui.hpp"
#include"opencv2/imgproc/imgproc.hpp"
usingnamespacestd;
usingnamespacecv;
//點乘法 elementwisemultiplication
cv::mat ewm(cv:
:mat m1,cv:
:mat m2)
//影象區域性對比度增強演算法
cv::mat ace(cv:
:mat src,intc =
4,intn=
20,intmaxcg =5)}
meanstddev(src,meanglobal,varglobal); //meanglobal為全域性均值 varglobal為全域性標準差
tmp2 = varglobal/varmask;
for(inti=
0;itmp2.convertto(tmp2,cv_8u);
tmp2 = ewm(tmp2,tmp);
dst = meanmask + tmp2;
imshow("d方法",dst);
dst = meanmask + c*tmp;
imshow("c方法",dst);
三、小結
從結果上來看,ace演算法對於特定情況下的細節增強是顯著的,但是並不是適用於所有的情況,並且其引數需要手工進行調整。了解它的特性,就能夠解決一系列的問題,有效地增強現實。
來自為知筆記(wiz)
區域性標準差實現對比度增強
一 理論 影象增強演算法的基本原則是 降低低頻區域,突出高頻區域 以此強化邊緣,達到增強的目的。最簡單的例子就是通過原始影象減去高斯模糊處理後的影象,就能夠將邊緣強化出來。ace的定義和原理看上去還是比較簡單的。這裡的 二 實現 涉及到區域性的運算,自然而然會想到使用卷積的方法。更好的是opencv...
python numpy實現 標準差,方差
使用numpy可以做很多事情,在這篇文章中簡單介紹一下如何使用numpy進行方差 標準方差 樣本標準方差 協方差的計算。variance 方差 方差 variance 是概率論中最基礎的概念之一,它是由統計學天才羅納德 費雪1918年最早所提出。用於衡量資料離散程度,因為它能體現變數與其數學期望 均...
均值,方差,標準差
對於一維資料的分析,最常見的就是計算平均值 mean 方差 variance 和標準差 standard deviation 在做 特徵工程 的時候,會出現缺失值,那麼經常會用到使用 平均值 或者 中位數等進行填充。平均值平均值的概念很簡單 所有資料之和除以資料點的個數,以此表示資料集的平均大小 其...