程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 圖像相似度算法的C#實現及測評(2)

圖像相似度算法的C#實現及測評(2)

編輯:關於C語言

代碼實現

步驟1,將圖像轉化成相同大小,我們暫且轉化成256 X 256吧。

public Bitmap Resize(string imageFile, string newImageFile)

        {

            img = Image.FromFile(imageFile);

            Bitmap imgOutput = new Bitmap(img, 256, 256);

            imgOutput.Save(newImageFile, System.Drawing.Imaging.ImageFormat.Jpeg);

            imgOutput.Dispose();

            return (Bitmap)Image.FromFile(newImageFile);

      }

這部分代碼很好懂,imageFile為原始圖片的完整路徑,newImageFile為強轉大小後的256 X 256圖片的路徑,為了“賽”後可以看到我們轉化出來的圖片長啥樣,所以我就把它保存到了本地了,以至於有了上面略顯丑陋的代碼。

步驟2,計算圖像的直方圖

public int[] GetHisogram(Bitmap img)

        {

            BitmapData data = img.LockBits( new System.Drawing.Rectangle( 0 , 0 , img.Width , img.Height ), ImageLockMode.ReadWrite , PixelFormat.Format24bppRgb );

            int[ ] histogram = new int[ 256 ];

            unsafe

            {

                                byte* ptr = ( byte* )data.Scan0;

                                int remain = data.Stride - data.Width * 3;

                                for( int i = 0 ; i < histogram.Length ; i ++ )

                                        histogram[ i ] = 0;

                                for( int i = 0 ; i < data.Height ; i ++ )

                                {

                                        for( int j = 0 ; j < data.Width ; j ++ )

                                        {

                                                int mean = ptr[ 0 ] + ptr[ 1 ] + ptr[ 2 ];

                                                mean /= 3;

                                                histogram[ mean ] ++;

                                                ptr += 3;

                                        }

                                        ptr += remain;

                                }

            }

                        img.UnlockBits( data ); 

            return histogram;

    }

這段就是驚天地泣鬼神的灰度直方圖計算方法,裡面的彎彎繞還是留給諸位自己去摻和。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved