義守大學電機系

授課教師:陳慶瀚

E-mail : pierre@isu.edu.tw   

8. Image Processing(影像處理)

下載image.cpplena.raw

 

1. 計算整張影像最大像素值的成員函式

2. 計算整張影像最小像素值的成員函式

3. 新增一個執行影像反白的成員函式:

       void Invert()

    其功能是影像反白,也就是對於每一個pixel[i][j], 執行

   pixel[i][j]=255-pixel[i][j];

    並且在主程式中驗證此一成員函式

4. 新增一個Image物件類別的成員函式:

      void binary()

   其功能是把影像每一個像素值變成0()255(),也就是對於每一個pixel[i][j], 執行

   if(pixel[i][j]>128)pixel[i][j]=255;

   else pixel[i][j]=0;

   並且在主程式中驗證此一成員函式

5. 新增一個Image物件類別的成員函式

      void region()

    其功能是把影像的值介於120200之間的像素值重設為255,其他設為0,此段功能的演算法如下:

   If((pixel[i][j]>120)&&(pixel[i][j]<200))pixel[i][j]=255;

   else pixel[i][j]=0;

    並且在主程式中驗證此一成員函式

6.新增計算影像normalization的成員函式

7. 影像低通濾波成員函式設計

參考程式碼:

    void LowPassFilter()

    {

        float fir[3][3]=

        {   1,1,1,

            1,1,1,

            1,1,1    };

        int i,j,ii,jj;

        int ma;

        Image tmp;

        tmp.Initialize(rows,columns);

        for(i=1;i<rows-1;i++)

        {

            for(j=1;j<columns-1;j++)

            {

                ma=0;

                for(ii=-1;ii<=1;ii++)

                {

                    for(jj=-1;jj<=1;jj++)

                    {

                        ma = ma + fir[ii+1][jj+1]*pixel[i+ii][j+jj];

                    }

                }

                tmp.pixel[i][j]=ma/9;

            }

        }

        for(i=1;i<rows-1;i++)

        {

            for(j=1;j<columns-1;j++)

            {

                pixel[i][j]=tmp.pixel[i][j];

            }

        }

    }

8. 設計影像高通濾波成員函式,濾波器係數為:

        float fir[3][3]=

        {   -1,-1,-1,

            -1,9,-1,

            -1,-1,-1    };

 

 


計算機程式

義守大學電機系 陳慶瀚
2005.11.04更新