生活随笔
收集整理的這篇文章主要介紹了
数字图像的5种增强处理
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
數(shù)字圖像的5種增強(qiáng)處理 ? ? ?#include<iostream> #include<cmath> using namespace std; int main() { ?int i,j,n,m,w,a[100][100],x[100][100],max[100][100][20],b[100][100],k,p,u; ?cout<<"輸入矩陣行列數(shù):"; ?cin>>n>>m; ?cout<<"輸入原圖像的亮度矩陣"<<endl; ?for(i=1;i<=n;i++) ?{ ??for(j=1;j<=m;j++) ??{ ???cin>>a[i][j]; ??} ?} ?do ?{ ??cout<<"選擇1:羅伯特梯度銳化?? 2:索伯爾梯度銳化?? 3:均值平滑?? 4:拉普拉斯銳化?? 5:中值濾波?? 6:結(jié)束"<<endl; ??? ?cin>>w; ???? if(w==1) ??{ ???for(i=1;i<n;i++) ???{ ????for(j=1;j<m;j++) ????{ ?????x[i][j]=abs(a[i][j]-a[i+1][j+1])+abs(a[i+1][j]-a[i][j+1]); ????} ???} ???for(j=1;j<m;j++) ???{ ????x[n][j]=2*abs(a[n][j]-a[n][j+1]); ???} ???for(i=1;i<n;i++) ???{ ????x[i][m]=2*abs(a[i][m]-a[i+1][m]); ???} ???x[n][m]=0; ???for(i=1;i<=n;i++) ???{ ????for(j=1;j<=m;j++) ????{ ?????cout<<"? "<<x[i][j]; ????} ????cout<<endl; ???} ??} ??if(w==2) ??{ ???for(i=2;i<n;i++) ???{ ????for(j=2;j<m;j++) ????{ ?????x[i][j]=abs(a[i-1][j-1]+2*a[i-1][j]+a[i-1][j+1]-a[i+1][j-1]-2*a[i+1][j]-a[i+1][j+1])+abs(a[i-1][j+1]+2*a[i][j+1]+a[i+1][j+1]-a[i-1][j-1]-2*a[i][j-1]-a[i+1][j-1]); ????} ???} ???x[1][1]=abs(3*a[1][1]-3*a[2][1]+a[1][2]-a[2][2])+abs(3*a[1][2]-3*a[1][1]+a[2][2]-a[2][1]); ????? x[1][m]=abs(a[1][m-1]+3*a[1][m]-a[2][m-1]-3*a[2][m])+abs(3*a[1][m]+a[2][m]-a[1][m-1]-3*a[2][m-1]); ????? x[n][1]=abs(3*a[n-1][1]+a[n-1][2]-3*a[n][1]-a[n][2])+abs(a[n-1][2]+3*a[n][2]-a[n-1][1]-3*a[n][1]); ????? x[n][m]=abs(a[n-1][m-1]+3*a[n-1][m]-a[n][m-1]-3*a[n][m])+abs(a[n-1][m]+3*a[n][m]-a[n-1][m-1]-3*a[n][m-1]); ???for(j=2;j<m;j++) ???{ ????x[1][j]=abs(a[1][j-1]+2*a[1][j]+a[1][j+1]-a[2][j-1]-2*a[2][j]-a[2][j+1])+abs(3*a[1][j+1]+a[2][j+1]-3*a[1][j-1]-a[2][j-1]); ?????? x[n][j]=abs(a[n-1][j-1]+2*a[n-1][j]+a[n-1][j+1]-a[n][j-1]-2*a[n][j]-a[n][j+1])+abs(a[n-1][j+1]+3*a[n][j+1]-a[n-1][j-1]-3*a[n][j-1]); ???} ???for(i=2;i<n;i++) ???{ ????x[i][1]=abs(3*a[i-1][m-1]+a[i-1][2]-3*a[i+1][1]-a[i+1][2])+abs(a[i-1][2]+2*a[i][2]+a[i+1][2]-a[i-1][1]-2*a[i][1]-a[i+1][1]); ?????? x[i][m]=abs(a[i-1][m-1]+3*a[i-1][m]-a[i+1][m-1]-3*a[i+1][m])+abs(a[i-1][m]+2*a[i][m]+a[i+1][m]-a[i-1][m-1]-2*a[i][m-1]-a[i+1][m-1]); ???}? ???for(i=1;i<=n;i++) ???{ ????for(j=1;j<=m;j++) ????{ ?????cout<<"? "<<x[i][j]; ????} ????cout<<endl; ???} ??} ??if(w==3) ??{ ???for(i=2;i<n;i++) ???{ ????for(j=2;j<m;j++) ????{ ?????x[i][j]=(a[i-1][j-1]+a[i-1][j]+a[i-1][j+1]+a[i][j-1]+a[i][j]+a[i][j+1]+a[i+1][j-1]+a[i+1][j-1]+a[i+1][j]+a[i+1][j+1])/9; ????} ???} ???x[1][1]=(4*a[1][1]+2*a[1][2]+2*a[2][1]+a[2][2])/9; ????? x[1][m]=(4*a[1][m]+2*a[1][m-1]+2*a[2][m]+a[2][m-1])/9; ????? x[n][1]=(4*a[n][1]+2*a[n][2]+2*a[n-1][1]+a[n-1][2])/9; ????? x[n][m]=(4*a[n][m]+2*a[n-1][m]+2*a[n][m-1]+a[n-1][m-1])/9; ???for(j=2;j<m;j++) ???{ ????x[1][j]=(2*a[1][j-1]+2*a[1][j]+2*a[1][j+1]+a[2][j-1]+a[2][j]+a[2][j+1])/9; ?????? x[n][j]=(2*a[n][j-1]+2*a[n][j]+2*a[n][j+1]+a[n-1][j-1]+a[n-1][j]+a[n-1][j+1])/9; ???} ???for(i=2;i<n;i++) ???{ ????x[i][1]=(2*a[i-1][1]+2*a[i][1]+2*a[i+1][1]+a[i-1][2]+a[i][2]+a[i+1][2])/9; ?????? x[i][m]=(2*a[i-1][m]+2*a[i][m]+2*a[i+1][m]+a[i-1][m-1]+a[i][m-1]+a[i+1][m-1])/9; ???} ???for(i=1;i<=n;i++) ???{ ????for(j=1;j<=m;j++) ????{ ?????cout<<"? "<<x[i][j]; ????} ????cout<<endl; ???} ??} ??if(w==4) ??{ ???for(i=2;i<n;i++) ???{ ????for(j=2;j<m;j++) ????{ ?????x[i][j]=a[i][j-1]+a[i][j+1]+a[i-1][j]+a[i+1][j]-4*a[i][j]; ????} ???} ???x[1][1]=a[1][2]+a[2][1]-2*a[1][1]; ???????? x[1][m]=a[1][m-1]+a[2][m]-2*a[1][m]; ???????? x[n][1]=a[n-1][1]+a[n][2]-2*a[n][1]; ???????? x[n][m]=a[n-1][m]+a[n][m-1]-2*a[n][m]; ???for(j=2;j<m;j++) ???{ ????x[1][j]=a[1][j-1]+a[1][j+1]+a[2][j]-3*a[1][j]; ????????? x[n][j]=a[n][j-1]+a[n][j+1]+a[n-1][j]-3*a[n][j]; ????????? x[j][1]=a[j-1][1]+a[j+1][1]+a[j][2]-3*a[j][1]; ????????? x[j][m]=a[j-1][m]+a[j+1][m]+a[j][m-1]-3*a[j][m]; ???} ???cout<<"上述數(shù)據(jù)后經(jīng)過銳化后得到的數(shù)據(jù)為以下矩陣:"<<endl<<endl; ???????? for(i=1;i<=n;i++) ???{ ????for(j=1;j<=m;j++) ????{ ?????if(abs(x[i][j]<10)) ?????{ ??????cout<<"?? "<<abs(x[i][j]); ?????} ?????else if(abs(x[i][j]<100)) ?????{ ??????cout<<"? "<<abs(x[i][j]); ?????} ?????else if(abs(x[i][j]<1000)) ?????{ ??????cout<<" "<<abs(x[i][j]); ?????} ????} ????cout<<endl; ???} ??} ??if(w==5) ??{ ???for(k=1;k<=n;k++) ???{ ????a[k][0]=a[k][1]; ????a[k][m+1]=a[k][m]; ???} ???for(k=1;k<=m;k++) ???{ ????a[0][k]=a[1][k]; ????a[n+1][k]=a[n][k]; ???} ???a[0][0]=a[1][1]; ???a[0][m+1]=a[1][m]; ???a[n+1][0]=a[n][1]; ???a[n+1][m+1]=a[n][m]; ???for(i=0;i<=n-1;i++) ???{ ????for(j=0;j<=m-1;j++) ????{ ?????for(k=1;k<=5;k++) ?????{ ??????max[i+1][j+1][k]=0; ??????for(p=i;p<=i+2;p++) ??????{ ???????for(u=j;u<=j+2;u++) ???????{ ????????max[i+1][j+1][k]=(a[p][u]>=max[i+1][j+1][k])?a[p][u]:max[i+1][j+1][k]; ???????} ??????} ??????if(k<=4) ??????{ ???????for(p=i;p<=i+2;p++) ???????{ ????????for(u=j;u<=j+2;u++) ????????{ ?????????if(max[i+1][j+1][k]==a[p][u]) ?????????{ ??????????b[p][u]=a[p][u]; ??????????a[p][u]=0; ??????????break; ?????????} ????????} ????????if(a[p][u]==0) ????????{ ?????????break; ????????} ???????} ??????} ??????if(k==5) ??????{ ???????x[i+1][j+1]=max[i+1][j+1][k]; ??????} ?????} ?????for(k=1;k<=5;k++) ?????{ ??????for(p=i;p<=i+2;p++) ??????{ ???????for(u=j;u<=j+2;u++) ???????{ ????????if(max[i+1][j+1][k]==b[p][u]) ????????{ ?????????a[p][u]=max[i+1][j+1][k];???????????????????????????? //數(shù)據(jù)的恢復(fù) ????????} ???????} ??????} ?????} ????} ???} ???cout<<"中值濾波后的新圖像亮度矩陣為:"<<endl; ???for(i=1;i<=n;i++) ???{ ????for(j=1;j<=m;j++) ????{ ?????cout<<"? "<<x[i][j]; ????} ????cout<<endl; ???} ??} ?} ?while(w!=6); ?return 0; } ? |
轉(zhuǎn)載于:https://www.cnblogs.com/zzkgis/p/3742621.html
總結(jié)
以上是生活随笔為你收集整理的数字图像的5种增强处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。