⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shuzituxiangchuli.cpp

📁 用VB写的关于数字图像处理的程序
💻 CPP
字号:
#include <iostream.h>
void main()
{
	//存储图像个栅格单元的灰度值
	int yuanTu[5][5]={{4,3,7,6,8},{2,4,8,9,9},{5,8,9,13,10},{7,9,12,15,11},{8,11,10,14,13}};
	int canKao[5][5]={{2,1,5,4,7},{1,2,7,10,10},{3,7,10,14,11},{12,15,13,10,5},{14,14,11,12,7}};
	int xinTu[5][5]={0};

	//存储中间变量
	int yuanZhiFang[16]={0},canZhiFang[16]={0},yuanLeiji[16]={0},canLeiji[16]={0},zhi[15]={0};
	float yuanPin[16],canPin[16],zhongJianZhi[17];

	//循环变量
	int i,j,k;

	//计算直方图
	for(k=0;k<16;k++)
		for(i=0;i<5;i++)
			for(j=0;j<5;j++)
			{
				if(yuanTu[i][j]==k)
					yuanZhiFang[k]+=1;
				if(canKao[i][j]==k)
					canZhiFang[k]+=1;
			}
	
	//计算累积直方图
	yuanLeiji[0]=yuanZhiFang[0];
	canLeiji[0]=canZhiFang[0];
	for(k=1;k<16;k++)
	{
		yuanLeiji[k]=yuanLeiji[k-1]+yuanZhiFang[k];
		canLeiji[k]=canLeiji[k-1]+canZhiFang[k];
	}

	//计算各灰度值出现的频率
	for(k=0;k<16;k++)
	{
		yuanPin[k]=yuanLeiji[k]/(float)25;
		canPin[k]=canLeiji[k]/(float)25;
	}
	
	//计算对比所需的中间变量
	zhongJianZhi[0]=(0+canPin[0])/2;
	for(k=1;k<16;k++)
	{
		zhongJianZhi[k]=(canPin[k]+canPin[k-1])/2;
	}
	zhongJianZhi[16]=(canPin[15]+1.1)/2;
	
	//计算对应关系
	for(i=0;i<16;i++)
		for(j=0;j<17;j++)
		{
			if(yuanPin[i]>=zhongJianZhi[j]&&yuanPin[i]<zhongJianZhi[j+1])
			{
				zhi[i]=j;				
				break;
			}			
		}

	//计算新图,即结果图
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++)				
			{
				xinTu[i][j]=zhi[yuanTu[i][j]];
				cout<<xinTu[i][j]<<"    ";
			}
		cout<<endl;
	}		
}
/****************************************************
         计算结果
2     1     6     4     9
1     2     9    10    10
3     9    10    14    11
6    10    13    15    12
9    12    11    14    14
Press any key to continue
****************************************************/


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -