這次的作業是對圖做平滑化、銳化和中值濾波器。
首先是讀取原圖。
再來是模糊化的程式執行結果。
再來是銳化的程式執行結果。
再來是加入雜訊胡椒鹽,方便後面的中值濾波做比較。
以下就是加入胡椒鹽後的圖和用中值濾波器處理過後的比較圖。
以下這是模糊化的部分程式碼
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,這次的作業讓我對於寫程式不再這麼懼怕。
沒有留言:
張貼留言