snifer

基于ADI的Blackfin ADSP-BF592的电子显微镜的开发系统(原创)

0
阅读(12254)

嵌入式设计大赛马上要开始了,前段时间和学生们讨论题目的问题,一个同学提到可以做一个电子显微镜的开发系统,我觉得非常有创意,现在把我们的总体设计写出来,希望大家能够提点意见,支持我们!!!

整套方案的基本原理主要是利用ADI公司最近推出800MMAC/400MHz的高速处理器的硬件开发平台的进行开发,活动功耗低至88 mW,采用小型9 mm x 9 mm 64引脚LFCSP封装,能够充分满足工业、医疗、视频、音频和通用市场的需求,本系统利用该平台的168Pin EXPORT扩展卡插槽或标准的RS-232串口进行数据的传输,如图1所示:

图1 原理图

2图片显微实现原理

图像的放大可以用插值的方法,其中一种简单的插值就是线性插值,线性插值虽然简单,却非常有效。我们在该试验中就使用了线性插值的方法。

所谓线性插值就是说:有一组离散数据{a(1),a(2),…,a(n)},我们想要知道a(k)和a(k+1)之间的数a(m) (k

图2 线性插值图

图像的线性插值放大

图像就是一个象素矩阵,可以表示为p(i,j)。现在用p(i,j)表示原图像中的某个点,ps(i,j)表示放大后的图像的某个点,放大过程如下:

首先计算需要插值的位置

新图像的某个点ps(x,y) 的值为

ps(x,y) =p(m,n)

m =原图像高×(x÷新图像高)

n =原图像宽×(y÷新图像宽)

m,n 一般会是一个小数,就是原图像需要插值的位置

知道了插值位置接下来就要对原图像进行插值了,如图3所示:

图3 插值以后的图

其中p(i,n) ,p(m,j) ,p(i+1,n) ,p(m,j+1) ,p(m,n) 就是用线性插值方法插进去的,

p(i,n) =p(i,j) +(p(i,j+1) -p(i,j)) ×(n-j)

p(m,j) =p(i,j) +(p(i+1,j) -p(i,j)) ×(m-i)

p(i+1,n) =p(i+1,j) +(p(i+1,j+1) -p(i+1,j)) ×(n-j)

p(m,j+1) =p(i,j+1) +(p(i+1,j+1) -p(i,j+1)) ×(m-i)

p(m,n) =p(i,n) +(p(i+1,n) -p(i,n)) ×(m-i)

i =floor(m)

j =floor(n)

floor是向下取整

这样放大图像的每一个点的值ps(x,y)就全有了,把他写到新图像中就完成了图像的线性插值放大。VC实现

我们用OpenCV(beta_5)库来读取图像,然后手工插值放大。程序是MFC/DOC/VIEW结构

首先接入OpenCV(beta_5)库实验源代码见程序代码。

理想放大效果如图-所示,局部放大效果图如5所示:

图4 理想放大图

图5局部放大图

3其他模块实现原理

3.1LCD 显示模块

ADI的Blackfin ADSP-BF592开发平台中的LCD 显示屏兼容多种LCD,可采用5 寸256 色屏或8 寸16bit 真彩屏,同时预留一个24bit 接口。

3.2键盘模块

ADI的Blackfin ADSP-BF592 开发平台中的小键盘使用ATMEGA8 单片机控制2 个PS2 接口和板载17 键小键盘,两个PS2可接PC 键盘和鼠标。


目前项目进展顺利,我会及时公布最新进展,五一坚持加班,呵呵,同志们觉得不错就投票啊!!

Baidu
map