资源简介
基于VC6.0 MFC对话框下的打开图像,canny边缘检测,虹膜内圆定位,直方图均衡,中值滤波及虹膜外圆定位,可以运行。需要安装opencv1.0
代码片段和文件信息
#include “StdAfx.h“
#include “function.h“
#include “math.h“
/*************************************************************************
* 函数名称:
* InteEqualize()
* 参数:
* InteEqualizeImg - 指向图象数据的指针
* int nWidth - 图象数据宽度
* int nHeight - 图象数据高度
************************************************************************/
void InteEqualize(unsigned char *InteEqualizeImg int nWidthint nHeight)
{
// 循环变量
int i = 0;
int j = 0;
// 临时变量
int Temp = 0;
// 灰度映射表
BYTE bMap[256];
// 灰度映射表
int Count[256];
// 清零
for (i = 0; i < 256;i++)
{
Count[i] = 0;
}
// 计算各个灰度值的计数
for (i = 0; i < nHeight; i ++)
{
for (j = 0; j < nWidth; j ++)
{
Count[InteEqualizeImg[i*nWidth+j]]++;
}
}
// 计算灰度映射表
for (i = 0; i < 256; i++)
{
// 初始为0
Temp = 0;
for (j = 0; j <= i ;j++)
{
Temp += Count[j];
}
// 计算对应的新灰度值
bMap[i] = (BYTE) (Temp * 255 / nHeight / nWidth);
}
for(i = 0; i < nHeight; i++)
{
for(j = 0; j < nWidth; j++)
{
// 计算新的灰度值
InteEqualizeImg[i*nWidth+j] = bMap[InteEqualizeImg[i*nWidth+j]];
}
}
}
//**************************************************************************
//对图像的中值滤波
//**************************************************************************
int Sort(int b[9]);
void Middlefilter(unsigned char *InteEqualizeImg int nWidthint nHeight)
{
int ijxyrrggbbm;
unsigned char *p_data; // 原图数据区指针
int widthheight; // 原图长、宽
int R[9]G[9]B[9];
p_data=InteEqualizeImg;
width=nWidth; // 获得位图宽度
height=nHeight; // 获得位图高度
for(i=1;i for(j=1;j {
//把3*3屏蔽窗口部分的所有像素值分别放入R[9]G[9]B[9]三个数组中
m=0;
for(x=i-1;x<=i+1;x++)
for(y=j-1;y<=j+1;y++)
{
B[m]=p_data[x*width+y];
G[m]=p_data[x*width+y+1];
R[m]=p_data[x*width+y+2];
m++;
}
//求三个数组的中值并分别放入rrggbb
bb=Sort(B);
gg=Sort(G);
rr=Sort(R);
//把中值代入原图像中
p_data[i*width+j]=bb;
p_data[i*width+j+1]=gg;
p_data[i*width+j+2]=rr;
}
}
//将3*3屏蔽窗口中的数据进行排序,并返回中间的值
int Sort(int b[9])
{
int ijtemp;
for(i=0;i<8;i++)
for(j=i+1;j<9;j++)
{
if(b[i]>b[j])
{
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
return b[4];
}
/*************************************************************************
* 函数名称:
* Bresenham()
* 输入参数:
* int Gao_temp1 - 记录圆心纵坐标
* int Gao_temp2 - 记录圆心横坐标
* int Gao_temp3 - 记录半径
* unsigned char *pUnchEdge - 记录原图像的缓冲区
**************************************************************************/
void Bresenham(int Gao_temp1 int Gao_temp2int Gao_temp3int nWidthint nHeightunsigned char *HoughImage)
{
int Bresenham_x = 0;
int Bresenham_y = Gao_temp3;
int Delta_D;
int Delta_1;
int Delta_2;
int direction;
Del
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 23787 2012-03-29 14:24 最终程序\Debug\function.obj
文件 0 2012-03-29 14:24 最终程序\Debug\function.sbr
文件 3351552 2012-03-29 14:24 最终程序\Debug\HongMo.bsc
文件 127047 2012-03-29 14:31 最终程序\Debug\HongMo.exe
文件 231244 2012-03-29 14:31 最终程序\Debug\HongMo.ilk
文件 15482 2012-03-29 14:24 最终程序\Debug\HongMo.obj
文件 6894508 2012-03-29 14:24 最终程序\Debug\HongMo.pch
文件 320512 2012-03-29 14:31 最终程序\Debug\HongMo.pdb
文件 3732 2012-03-29 14:31 最终程序\Debug\HongMo.res
文件 0 2012-03-29 14:24 最终程序\Debug\HongMo.sbr
文件 48985 2012-03-29 14:24 最终程序\Debug\HongMoDlg.obj
文件 0 2012-03-29 14:24 最终程序\Debug\HongMoDlg.sbr
文件 10881 2012-03-29 14:24 最终程序\Debug\shuru.obj
文件 0 2012-03-29 14:24 最终程序\Debug\shuru.sbr
文件 106508 2012-03-29 14:24 最终程序\Debug\StdAfx.obj
文件 1375743 2012-03-29 14:24 最终程序\Debug\StdAfx.sbr
文件 222208 2012-08-30 15:50 最终程序\Debug\vc60.idb
文件 389120 2012-03-29 14:24 最终程序\Debug\vc60.pdb
文件 19333 2012-03-29 14:22 最终程序\function.cpp
文件 1761 2012-03-29 14:22 最终程序\function.h
文件 23140 2012-08-28 09:04 最终程序\HongMo.aps
文件 2402 2012-08-30 15:50 最终程序\HongMo.clw
文件 2063 2012-03-26 21:05 最终程序\HongMo.cpp
文件 4478 2012-03-26 21:05 最终程序\HongMo.dsp
文件 537 2012-03-26 21:05 最终程序\HongMo.dsw
文件 1324 2012-03-26 21:05 最终程序\HongMo.h
文件 238592 2012-08-30 15:51 最终程序\HongMo.ncb
文件 914432 2012-08-30 15:51 最终程序\HongMo.opt
文件 246 2012-08-30 15:50 最终程序\HongMo.plg
文件 7383 2012-03-29 14:31 最终程序\HongMo.rc
............此处省略16个文件信息
- 上一篇:SMTP邮件发送MFC、VC++
- 下一篇:MFC实现DES加密解密实现
评论
共有 条评论