C 結合GDAL實現中值濾波

2021-07-02 03:36:37 字數 1334 閱讀 5744

private void btnmiddlefilter_click(object sender, eventargs e)

gdal.allregister();

//更改讀寫許可權

dataset srcds = gdal.open(openfilename, access.ga_update);

datatype srctype = srcds.getrasterband(1).datatype;

int bandcount = srcds.rastercount;

int srcwidth = srcds.rasterxsize;

int srcheight = srcds.rasterysize;

debug.writeline("原始影像資料型別是:", srctype);

debug.writeline("原始影像的列數:", srcwidth);

debug.writeline("原始影像的行數:", srcheight);

int bandarray = new int[bandcount];

for (int i = 0; i < bandcount; i++)

if (srctype == datatype.gdt_uint16)

else

newarray[i * srcwidth + j] = dataarray[i * srcwidth + j];}}

//將更新數值的資料重新寫入影象

srcds.writeraster(0, 0, srcwidth, srcheight, newarray, srcwidth, srcheight, bandcount, bandarray, 0, 0, 0);

srcds.flushcache();

}//最後釋放資源

srcds.dispose();

messagebox.show("中值濾波:success");

}

原圖:

原圖細節:

中值濾波結果(不明顯,需要結合下面的細節展示來觀察):

細節展示:

中值濾波C 實現

中值濾波器是一種非線性濾波器,常用於消除影象中的椒鹽雜訊。與低通濾波不同的是,中值濾波有利於保留邊緣的尖銳度,但它會洗去均勻介質區域中的紋理。因為椒鹽雜訊是由灰度值為0或者255產生的點,所以去畫素周圍畫素值得中值得話很容易剔除校驗雜訊。include include include using n...

c 實現中值濾波

中值濾波是一種非線性平滑技術。中值濾波的原理通俗的講就是排序,取中間值代替當前值。對椒鹽雜訊有明顯效果。知道原理,實現起來就不難了,如下 include stdio.h 濾波長度 define n filter 20 中值濾波 unsigned char medfilter int databuff...

中值濾波 MATLAB實現

1 原理 中值濾波能有效抑制雜訊。主要採用灰度值排序,把數字影象中一點的值用該點的乙個鄰域中各點值的中值代替,依次取代畫素中心點的灰度值,讓原本與周圍畫素灰度值相差比較大的畫素更改為與周圍的畫素值比較接近的值,從而消除孤立的雜訊點。它可以保護影象邊緣的同時去除雜訊。實現 clear all clc ...