这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 用单片机怎样进行图象处理啊?

共2条 1/1 1 跳转至

用单片机怎样进行图象处理啊?

院士
2006-09-17 18:14:16     打赏
用单片机怎样进行图象处理啊?



关键词: 单片机     怎样     进行     图象处理    

院士
2006-12-22 22:43:00     打赏
2楼
问 毕业设计:要求用单片机进行简易的图象处理,单片机使用PHILIP的89LV52,请问高手,帮帮忙吧!!!!我确实觉得摸不着头脑啊! 能不能给我一些指导或者有意义的网站??在下先谢过!!! 1: 估计作为用来滤波可以。 2: 如果图像很小,不要求速度,单片机也是也可以的不知道“简易”到什么程度 3: 处理什么?是压缩,解压,传送,显示,还是寻找图形边缘之类的数据处理?
但首先得弄清楚图象的数据格式才好做文章
去这里下载文件格式大全
http://bbs.21ic.com/upfiles/img/2006519049233.rar
去这里看文件格式大全
http://www.moon-soft.com/program/FORMAT/#图形文件 4: 简易处理就是做些简单的数字图象处理,滤波,2值化,具体要怎么做啊!以前从来没有接触过,求教高手了!处理之后,把图象送给LCD显示. 5: 先弄清楚图象的数据格式找到图象数据区,再0101地逐点比较慢慢玩
一般图象文件都有个文件头,
去这里下载文件格式大全
http://bbs.21ic.com/upfiles/img/2006519049233.rar
去这里看文件格式大全
http://www.moon-soft.com/program/FORMAT/#图形文件
弄懂图象格式就能去棹文件头,找到数据区进行处理了
6: 单片机有没有办法显示JPEG格式的图象?液晶应该如何选择? 7: 还是要用函数吗?图象数据通过P0口传入单片机,此时是不是还是要用一些函数来处理这些数据啊? 8: 如果不是bmp档,而是压缩文档,首先要解压缩这部分工作若允许的话,用pc机找个软件来转换为上策
若只能用单片机来做,则麻烦大了,必须先找到压缩方法的算法,再用单片机来实现.哈哈,慢慢地磨吧.
bmp档去掉文件头后,剩下的是bitmap---位图,"1","0"直接对应图象中的亮点和暗点,用单片机是很容易处理的.除此以外的jpg,GIF档都是压缩文件,数据不直接对应图象点阵. 9: 用单片机+FPGA到可以实现在VGA上显示 10: 先转换为bmp吧,这种类型的项目肯定会跟上位机配套的琢磨单片机处理gif,jpg什么的没意义,自己玩玩还可以。 11: 详细说明没有所谓的BMP,GIF格式,因为我的图象是从指纹传感器采集而来的数据,还不具图象的说法哈!但是要求单片机处理这些指纹图象数据,最后把数据送到LCD上显示。 12: 晕,早点说呀指纹采集器及开发包,人家是靠软件赚银子的,没那么容易让人破解的,哈哈,歇搁吧,让别人也混口饭吃.
网上搜"指纹锁",但只有叫卖开发包的.
如果你能确定数据是1:1的点阵就好办了,不过不会有人这么便宜你的,除非是自己做的. 13: 我哭啊!我还是搞不懂啊
但是老师要求我做啊!我哭死了! 14: 唉!不要只会哭,
网上有很多“指纹传感器”
也有很多应用资料
只要搜一下就有


另:

你最好是问{“指纹传感器”怎么用}
而不是问{用单片机怎样进行图象处理啊?}

15: 做了的其他的我都做了,就只是单片机处理图像这方面了.有用的资料我都找过了哈 16: 当然可以处理先把单片机的RAM扩展到能存2~3个图像,对RAM内的东西整来整去就行。
指纹的图像不大的。二值化,滤波,孤立点清除,缩放。就是速度超慢
而已,不过你是学习,不是做产品。图像处理算法博大精深,不是你能
处理的,找一两个简单的实现就可以了。细化、数学形态学处理运算量
大可能就做不了,压缩什么的别想。

17: 有些懂了!谢谢!!非常感谢!! 18: 去这里看http://www.biocn.com/service.htm
生物识别技术生物识别技术问与答 (点击下面链接可阅读全文)
01、生物技术公司大型网站01、什么是生物识别技术?
02、生物识别带来真正的安全便捷02、什么是拒真率和认假率?
03、几种生物识别技术的比较03、指纹识别比密码可靠?
04、指纹身份识别的可靠性04、什么是指纹?
05、指纹识别技术最新应用05、为什么有干手指问题?
06、指纹识别技术概论06、指纹门禁有何优点?
07、指纹的几种取像技术和特点07、社保管理为什么用指纹?
08、指纹识别的基本原理08、深安有几种指纹门禁?
09、面像识别技术原理09、什么是指纹考勤机?

10、国外优秀指纹识别系统
10、为什么用指纹考勤机?
11、面像识别技术11、指纹门禁与卡门禁区别?
12、指纹识别技术12、指纹IC卡如何协和工作?
13、视网膜识别技术13、指纹门禁如何连网?
14、虹膜识别技术
14、什么是指纹鼠标?
15、静脉识别技术
15、为什么指纹设备价格高?
16、声音及签名识别技术16、指纹严重受伤怎么办?
17、多种考勤系统比较17、无法采集指纹怎么办?
18、静脉识别系统 FAQ18、什么是电锁,电锁种类?
19、为何要选用指纹考勤机19、什么是指纹可采集率?
20、多种考勤设备投入比较20、指纹可以复制吗?
21、指纹IC卡使用原理21、1:1和1:N区别是什么?
22、掌形机的工作原理22、掌形机最大的优点?




19: 二值化算法在网上搜了一下,都是些象这样类似的算法,估计这种算法只能用在计算机上面,要在单片机内部使用恐怕不行,请高手再指点一下。谢谢!!
附:
// 迭代法
BOOL WINAPI MeanThreshold(LPSTR lpDIBBits, LONG lWidth, LONG lHeight)
{
    // 指向源图像的指针
LPSTR lpSrc;

// 指向缓存图像的指针
LPSTR lpDst;

// 指向缓存DIB图像的指针
LPSTR   lpNewDIBBits;
HLOCAL  hNewDIBBits;

// 循环变量
long i;
long j;

// 像素值
unsigned char pixel;

// 灰度直方图数组
long lHistogram[256];

// 阈值, 最大灰度值与最小灰度值, 两个区域的平均灰度值
unsigned char iThreshold, iNewThreshold, iMaxGrayValue, iMinGrayValue, iMean1GrayValue, iMean2GrayValue;

// 用于计算 (最小灰度-阈值),(阈值-最大灰度) 两个区域的中间变量
long lP1, lP2, lS1, lS2;

// 迭代次数
int iIterationTimes;

// 图像每行的字节数
LONG lLineBytes;

// 暂时分配内存, 以保存新图像
hNewDIBBits = LocalAlloc(LHND, lWidth * lHeight);

if (hNewDIBBits == NULL)
{
// 分配内存失败
return FALSE;
}

// 锁定内存
lpNewDIBBits = (char *) LocalLock(hNewDIBBits);

// 初始化新分配的内存, 设定初始值为255
lpDst = (char *) lpNewDIBBits;
memset(lpDst, (BYTE)255, lWidth * lHeight);

// 计算每行的字节数
lLineBytes = WIDTHBYTES(lWidth * 8);

for(i= 0; i < 256; i++)
{
lHistogram[i] = 0;
}

// 获得灰度直方图 灰度最大值和最小值
iMaxGrayValue = 0;
iMinGrayValue = 255;
for(i= 0; i < lWidth; i++)
{
for(j= 0; j < lHeight; j++)
{
// 指向源图像倒数第j行,第i个象素的指针
lpSrc = (char *)lpDIBBits + lLineBytes * j + i;

pixel = (unsigned char) *lpSrc;

lHistogram[pixel]++;
//修改最大,最小灰度值
if(iMinGrayValue > pixel)
{
iMinGrayValue = pixel;
}
if(iMaxGrayValue < pixel)
{
iMaxGrayValue = pixel;
}
}
}

// 迭代求最佳阈值
iNewThreshold = (iMinGrayValue + iMaxGrayValue)/2;
iThreshold = 0;

for(iIterationTimes = 0; iIterationTimes < 100 && iThreshold != iNewThreshold; iIterationTimes++)
{
iThreshold = iNewThreshold;
lP1 = 0;
lS1 = 0;
lP2 = 0;
lS2 = 0;

// 求以iNewThresHold分割的两个区域的灰度平均值
for(i = iMinGrayValue; i < iThreshold; i++)
{
lP1 += lHistogram[i] * i;
lS1 += lHistogram[i];
}
iMean1GrayValue = (unsigned char) (lP1/lS1);
for(i = iThreshold + 1; i < iMaxGrayValue; i++)
{
lP2 += lHistogram[i] * i;
lS2 += lHistogram[i];
}
iMean2GrayValue = (unsigned char) (lP2/lS2);
iNewThreshold = (iMean1GrayValue + iMean2GrayValue)/2;
}

// 根据阈值将图像二值化
    for(i = 0; i < lWidth; i++)
{
for(j = 0; j < lHeight; j++)
{
lpSrc = (char *) lpDIBBits + lLineBytes * j + i;
lpDst = (char *) lpNewDIBBits + lLineBytes * j + i;
pixel = (unsigned char) *lpSrc;
if (pixel <= iThreshold)
{
*lpDst = (unsigned char)0;
}
else
{
*lpDst = (unsigned char)255;
}
}
}

// 复制图像
memcpy(lpDIBBits, lpNewDIBBits, lWidth * lHeight);

// 释放内存
LocalUnlock(hNewDIBBits);
LocalFree(hNewDIBBits);

// 返回
return TRUE;
}

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]