2013年12月3日 星期二

HW3

這次的作業是對圖做平滑化、銳化和中值濾波器。
首先是讀取原圖。
 再來是模糊化的程式執行結果。
 再來是銳化的程式執行結果
 再來是加入雜訊胡椒鹽,方便後面的中值濾波做比較。
 以下就是加入胡椒鹽後的圖和用中值濾波器處理過後的比較圖。

以下這是模糊化的部分程式碼

number1= bPtrImageROW1[3*(i-1)+k]+bPtrImageROW1[3*i+k]+bPtrImageROW1[3*(i+1)+k]+
bPtrImageROW2[3*(i-1)+k]+bPtrImageROW2[3*i+k]+bPtrImageROW2[3*(i+1)+k]+
bPtrImageROW3[3*(i-1)+k]+bPtrImageROW3[3*i+k]+bPtrImageROW3[3*(i+1)+k];
 
       bPtrImageROW4[3*i+k]=(int)((float)(number1/9+0.5));


                                                      010
再來是銳化部分程式碼 用的是 151 方式
                                                      010

number2= (-1)*bPtrImageROW1[3*i+k]+(-1)*bPtrImageROW2[3*(i-1)+k]+
                        5*bPtrImageROW2[3*i+k]+(-1)*bPtrImageROW2[3*(i+1)+k]+
                                        (-1)*bPtrImageROW3[3*i+k];

if(number2>255)
number2=255;
if(number2<0)
number2=0;
bPtrImageROW5[3*i+k]=(int)((float)(number2));



這是  中值濾波器 的部分程式碼
                bPtrImageROW1 = (Byte *)Image2->Picture->Bitmap->ScanLine[j-1];
bPtrImageROW2 = (Byte *)Image2->Picture->Bitmap->ScanLine[j];
bPtrImageROW3 = (Byte *)Image2->Picture->Bitmap->ScanLine[j+1];
bPtrImageROW7 = (Byte *)Image5->Picture->Bitmap->ScanLine[j];
for (i=1; i<iImageWidth-1; i++)
{

for (k=0; k <3; k++)
{
nine[0]=bPtrImageROW1[3*(i-1)+k];
nine[1]=bPtrImageROW1[3*i+k];
nine[2]=bPtrImageROW1[3*(i+1)+k];
nine[3]=bPtrImageROW2[3*(i-1)+k];
nine[4]=bPtrImageROW2[3*i+k];
nine[5]=bPtrImageROW2[3*(i+1)+k];
nine[6]=bPtrImageROW3[3*(i-1)+k];
nine[7]=bPtrImageROW3[3*i+k];
nine[8]=bPtrImageROW3[3*(i+1)+k];
for(int a=0;a<9;a++)
{
 if(nine[a]>nine[a+1])
 {
 int c;
 c=nine[a+1];
 nine[a+1]=nine[a];
 nine[a]=c;
 }
}
bPtrImageROW7[3*i+k]=nine[4];
}
}




做完這次的作業感覺我離Photoshop更進一步了,了解了他部份的原理,程式不強的我也可以做一個簡單Photoshop,這次的作業讓我對於寫程式不再這麼懼怕。


沒有留言:

張貼留言