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

共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、静脉识别系统 FAQ 18、什么是电锁,电锁种类?
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 跳转至

回复

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