線性對比度增強 C GDAL庫)

2021-10-24 22:03:09 字數 3246 閱讀 9337

#include

"gdal_priv.h"

#include

"cpl_conv.h"

#include

#include

using

namespace cv;

using

namespace std;

void

createrasterfile()

//輸出影象的格式資訊

cout <<

"driver:"

<

>

getdriver()

->

getdescription()

<<

podataset -

>

getdriver()

->

getmetadataitem

(gdal_dmd_longname)

<< endl;

//輸出影象的大小和波段個數

cout<<

"size is "

<

>

getrasterxsize()

<

>

getrasterysize()

<<

podataset-

>

getrastercount()

<

//輸出影象的投影資訊

if(podataset-

>

getprojectionref()

!=null

) cout<<

"projection is"

<

>

getprojectionref()

<

//輸入影象的座標和解析度資訊

double adfgeotransform[6]

;if(podataset-

>

getgeotransform

(adfgeotransform)

== ce_none)

//delete podataset; //釋放資源

gdalclose

((gdaldataseth)podataset)

;system

("pause");

}void

updaterasterfile()

//獲取影象大小

int iwidth = pods-

>

getrasterxsize()

;int iheight = pods-

>

getrasterysize()

;宣告一行影象大小的空間

//memset(pbuf, 0, sizeof(unsigned char)*iwidth);

//獲取波段個數

int nbands = pods-

>

getrastercount()

;//進行波段迴圈

for(

int r =

1; r <= nbands;

++r)

;//獲取影象直方圖

xband-

>

gethistogram(0

,255.5

,256

, panhistogram, true, false,

null

,null);

//最小置信區間2%

double minnum =

0, minpbuf =0;

for(

int i =

1; i <

256; i++)}

//最大置信區間98%

double maxnum =

0, maxpbuf =0;

for(

int i =

254; i >

0; i--)}

cout <<

"band"

<

" minpbuf= "

<< minpbuf << endl;

cout <<

"band"

<

" maxpbuf= "

<< maxpbuf << endl;

//獲取波段xy值

int nxsize = xband -

>

getxsize()

;int nysize = xband-

>

getysize()

;unsigned

char

*pbuf =

newunsigned

char

[nxsize * nysize]

;//動態指配陣列

//獲取指定行列位置每個波段的像元值,存入pbuf,nxsize,nysize表示視窗大小

xband-

>

rasterio

(gf_read,0,

0, nxsize, nysize, pbuf, nxsize, nysize, gdt_byte,0,

0);unsigned

char

*pbufout =

newunsigned

char

[nxsize * nysize]

;for

(int i =

0; i < nxsize*nysize; i++)if

(pbuf[i]

> maxpbuf)

if(pbuf[i]

>= minpbuf&&pbuf[i]

<= maxpbuf)

} xband-

>

rasterio

(gf_write,0,

0, nxsize, nysize, pbufout, nxsize, nysize, gdt_byte,0,

0);delete

pbuf;

delete

pbufout;

}gdalclose

((gdaldataseth)pods)

; cout <<

"資料集更新完成"

<< endl;

system

("pause");

}int

main()

進行2%置信區間拉伸,結果如下:

OpenCV 對比度增強之線性變換

原理講解 輸入的影象為i,寬為w,高為h,輸出影象記為o,影象的線性變換可以利用以下公式定義 當a 1,b 0時,o為i的乙個副本 如果a 1則輸出影象o的對比度比i有所增大 如果00時,亮度增加 當b 0時,亮度減小。舉例 假設影象的灰度級範圍是 50,100 通過a 2,b 0的線性變換,可以將...

對比度增強(一) 線性變換

線性變換 影象為i,寬為w,高為h,輸出影象記為o,影象的線性變換可以利用一下公式定義 o r,c a i r,c b 0 r h,0 c w 當a 1,b 0時,o為i的乙個副本 如果a 1,則輸出影象o的對比度比i有所增加 如果0 a 1,則o的對比度比i有所減小。而b值的改變,影響的是輸出影象...

python OpenCV之對比度增強

對比度指的是一幅影象中明暗區域最亮的白和最暗的黑之間不同亮度層級的測量,差異範圍越大代表對比越大,差異範圍越小代表對比越小。對比度增強技術主要解決影象灰度級範圍較小造成的對比度低問題,目的是將影象的灰度級放大到指定的程度,使影象中的細節看起來更加清晰。概念 灰度直方圖是影象灰度級的函式,用來描述每個...