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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

图像的熵、灰度平均值、灰度中值、方差

發(fā)布時間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像的熵、灰度平均值、灰度中值、方差 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

//圖像的熵=========================================================================================
????????private void Menu_Entropy_Click(object sender, EventArgs e)
????????{
????????????if (curBitmap != null)
????????????{
????????????????//計算熵
????????????????double entropy = GetEntropy(curBitmap, curBitmap.Width, curBitmap.Height);

????????????????MessageBox.Show("圖像:"+curFileName +"nn"+"圖像熵為??H = " + entropy);
???????????????
????????????}
????????}

????????//計算熵的函數(shù)-----------------------------------------------
????????public double GetEntropy(Bitmap bmp, int w, int h)
????????{
????????????int g;
????????????double H = 0.0;

????????????int[] pix = new int[256];
????????????Array.Clear(pix, 0, 256);

????????????//獲取各灰度值的像素個數(shù)
????????????for (int i = 0; i < h; i++)
????????????{
????????????????for (int j = 0; j < w; j++)
????????????????{
????????????????????Color c = bmp.GetPixel(j, i);
????????????????????g = (int)(0.299*c.R + 0.587*c.B + 0.114*c.G);
????????????????????pix[g]++;
????????????????}
????????????}

???????????

????????????//計算熵
????????????for (int i = 0; i < 256; i++)
????????????????if (pix[i] > 0)
????????????????????H = H + pix[i] * Math.Log10(pix[i]);
????????????H = Math.Log10(w * h) / Math.Log10(2) - H / (w * h * Math.Log10(2));

????????????return H;

????????}

?

//灰度平均值=======================================================================================
????????private void Menu_GrayAverage_Click(object sender, EventArgs e)
????????{
????????????if (curBitmap != null)
????????????{
????????????????double aver = GetGrayAverage(curBitmap, curBitmap.Width, curBitmap.Height);

????????????????MessageBox.Show("圖像:" + curFileName +"nn"+ "灰度平均值為??A = " + aver);
????????????}
????????}

????????//計算灰度平均值的函數(shù)---------------------------------------
????????public double GetGrayAverage(Bitmap bmp, int w, int h)
????????{
????????????double sum = 0;

????????????//計算平均值
????????????for (int i = 0; i < w; i++)
????????????????for (int j = 0; j?< h; j++)
????????????????{
????????????????????Color c = bmp.GetPixel(i,?j);
????????????????????sum = sum + (int)(0.299 * c.R + 0.587?* c.B + 0.114 * c.G);
????????????????}
????????????double aver = sum / (w * h);

????????????return aver;
????????}

?

//灰度中值=========================================================================================
????????private void Menu_GrayMid_Click(object sender, EventArgs e)
????????{
????????????if (curBitmap != null)
????????????{
????????????????Bitmap bmp = curBitmap;

????????????????//由5 X 5的矩形獲取值
????????????????int[] pix = new int[25];
????????????????for (int j = 0; j < 5; j++)
????????????????{
????????????????????for (int i = 0; i < 5; i++)
????????????????????{
????????????????????????pix[i + j * 5] = bmp.GetPixel(100 + i, 100 + j).B;
????????????????????}
????????????????}
????????????????pix = MedianSorter(pix,25);

????????????????MessageBox.Show("圖像:" + curFileName + "n" +
????????????????????"左上角坐標為(100,100)的5X5矩形塊n灰度中值為" +
????????????????????"??M = " + pix[12]);
????????????}
????????}

????????//排序-------------------------------------------------------
????????public int[] MedianSorter(int[] data, int m)
????????{
????????????int tem;

????????????for (int i = m - 1; i >= 1; i--)
????????????????for (int j = 1; j <= i; j++)
????????????????????if (data[j - 1] > data[j])
????????????????????{
????????????????????????tem = data[j];
????????????????????????data[j] = data[j - 1];
????????????????????????data[j - 1] = tem;
????????????????????}

????????????return data;
????????}

?

//方差=============================================================================================
????????private void Menu_Variance_Click(object sender, EventArgs e)
????????{
????????????if (curBitmap != null)
????????????{
????????????????double vari = GetVariance(curBitmap, curBitmap.Width, curBitmap.Height);

????????????????MessageBox.Show("圖像:" + curFileName + "nn" + "方差值??S = " + vari);
????????????}
????????}

????????//計算方差值的函數(shù)-------------------------------------------
????????public double GetVariance(Bitmap bmp, int w, int h)
????????{
????????????double aver, vari =0;
????????????int data;

????????????//求平均值
????????????aver = GetGrayAverage(bmp ,w , h);

????????????//求方差
????????????for (int i = 0; i < w; i++)
????????????{
????????????????for (int j = 0; j < h; j++)
????????????????{
????????????????????Color c = bmp.GetPixel(i, j);
????????????????????data = (int)(0.299 * c.R + 0.587 * c.B + 0.114 * c.G);
????????????????????vari = vari + (data - aver) * (data - aver);
????????????????}
????????????}
????????????vari = vari / (w * h);

????????????return vari;
????????}

?

?

?

連接:http://blog.sina.com.cn/s/blog_5edfc90301012nbz.html

轉(zhuǎn)載于:https://www.cnblogs.com/pengkunfan/p/3444580.html

總結(jié)

以上是生活随笔為你收集整理的图像的熵、灰度平均值、灰度中值、方差的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。