徐自远
摘要:在嵌入式图像处理系统中,通过模块化软件设计,可以将复杂的软件功能划分为不同的模块进行实现,从而降低设计难度。在模块化软件系统设计中,其难点在于既要确保各个模块之间在物理因素上的分离,逻辑因素上的统一,各个模块可以协调合作,从而提升软件系统性能。该文对嵌入式图像处理系统中模块化软件设计技术进行探讨。
关键词:嵌入式;图像处理系统;模块化软件
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2015)30-0149-02
对于嵌入式图像处理系统设计中,运用模块化软件设计方法,不仅可以提升嵌入式图像处理系统的可拓展性,也可以提升其图像处理的准确率,发挥模块化软件设计优势,可以根据用户的需求灵活扩展,并且对以后系统的升级有良好的兼容性,使系统可用性增加。本文以基于S3C44B0X内核的嵌入式图像处理系统为例做模块化设计具体分析。
1 总体设计结构
在嵌入式图像处理系统总体结构中,主要由文件模块、图像模块、类型转换模块、预处理模块组成,可以实现对嵌入式图像的优化处理,提升系统性能可扩展性。如图 1所示:
2 嵌入式图像处理系统模块设计
2.1 文件模块设计
本嵌入式系统硬件主要由三部分组成,主控模块、图形显示模块、界面控制模块。其中图形显示模块选用CMD520的5.7寸CSTN LCD显示屏,该LCD显示屏可直接与S3C44B0X内置LCD接口进行连接。主控模块使用S3C44B0X控制器,该主控芯片自带LCD硬件驱动,可以与本系统LCD接口直接连接。系统设计使用电阻式触摸屏作为本项目输入设备,本系统选用ADS7843来作为系统界面触摸屏的控制器,并通过软件差值算法提升系统界面可控性【1】。系统组成框图如图 2所示。
本系统功能方面,主要包括对图像文件的打开、保存、打印设置和退出等相关的操作。对于该系统的文件处理模块,针对图像文件的读取问题进行设计,实现图像打开、图像保持等相关功能操作【2-3】。下面主要介绍在matlab的GUI编程环境下完成上述功能的实现【4】。
1)打开
对于嵌入式图像处理系统中,打开菜单,在系统设计中,运用 uigetfile( )函数,依照相应标准读取图像,在文件处理的对话框中打开该图像。实现代码如下:
[Function open_Callback ( hObject, eventdata, handles )
[ filename, pathname ] = uigetfile( {'*.jpg';'*.bmp';'*.tif'} S = imread( [pathname filename] );
handles.S = S;
axes( handles.axes1 );
imshow( S );
handles.output = hObject ;
guidata ( hObject, handles );\&]
2)保存
嵌入式图像处理系统设计中,对于图像保存菜单的实现,主要可以应用uiputfile()标准,进行对话框处理,其代码如下:
[function save_Callback( hObject, eventdata, handles )
global hresult ;
[filename ,pathname, filterindex] = uiputfile( ...
{‘ *.bmp;*.jpg;*.tif,Picture styles(*.bmp;*.jpg;*.tif) ;
‘*.bmp, Bitmap-files(*.bmp); ...
'*.*', 'All Files (*.*)'}, ...
'Save as');
If isequal( [ ilename,pathname],[0,0]) return
else
File = fullfile(pathname,filename);
saveas( hresult,File)
End\&]
2.2 图像模块设计
对于该嵌入式图像处理系统,在图像模块设计中,可以实施图像灰度、图像的大小、图像腐蚀、图像的比例变化等处理。针对其灰度变化功能,主要是可以在嵌入式系统中增大图像的动态范围,有效的去扩展图像对比度,从而使图像变得更为清晰,使图像的特征更加明显,是一种能够增强图像表现形式的重要手段。在实际功能的实现中,使用模块化设计,运用分段线性变换比例线性变换以及非线性灰度变换等方式,具体实现图像的灰度处理。对于本例之中,采用的就是在系统中运用分段线性变换的模块化设计,以有效实现对 (20~180)图像区间的灰度变换。
而在系统设计的图像处理模块,针对图像的像素处理,就是可以删除图像中的某些边界像素,确保输出图像的像素值能够是输入图像相应像素与其相邻域中的最小像素值。其图像处理效果如下图中所示:
其实际代码实现过程如下所示:
[Function fs_Callback ( hObject, eventdata, handles )
h = getimage( handles.axes1 );
se=strel( 'arbitrary', eye(10) );
h1=imerode( h, se);
figure ;
Imshow(h1)\&]
2.3 图像类型转换模块设计
在嵌入式图像处理系统中,其图像类型转换的模块设计中,需要能够对噪声图像采用局部算子的方式,平滑处理某一像素,可以实时进行图像局部像素的运算及优化。在该模块中,可以对多个像素实现并行处理,能够实时对图像信息进行相关处理。该系统设计中,针对图像类型转换方法,可以运用函数rgb/ind,从而在系统中将 RGB 类型的图像成功转换为索引类型图像,其实现效果如图4中所示。
2.4 图像的预处理模块设计
对于嵌入式图像处理系统设计之中,运用模块化的软件设计方法,可以用计算机代替人们来认识图像并确定一幅图像中感兴趣目标的所在位置。图像数据预处理代码如下:
[I1=imread( 'D:\Install\ images\imdemos\moon.tif' ); 图像的实际位置
L = 4;
I = wextend('2D','zpd',I1,L);
nbc= size(I,1);
X = im2double(I); //产生噪声的相关图像
In it=2055415866;
randn('seed',init);
x=X+randn(size(X))/10;
wname='sym4';
lev =3;
[c,l] =wavedec2(x,lev, wname );
sigma_s=0.048535;// 在压缩图像的图像降噪时,可以使用wbmpen 函数选择图像压缩镇南关的数据阈值
alpha=2;
thr_s=wbmpen(c,l,sigma_s,alpha);//能够用软阈值进行图像压缩,有效保存图像中的低频信号,降噪。通过对图像进行预处理,就可以准确找出图像中某一点的位置,并对其图像进行相关的处理操作。\&]
3 结束语
综上所述,对于嵌入式图像处理系统的设计之中,运用模块化软件设计方法,不仅可以资源较少的嵌入式系统中自动处理图像信息,也可以更好实现对图像的编辑处理,提升嵌入式系统处理图像的准确率,满足较少资源条件下的嵌入式系统图像在线处理需求,提升系统设计性能,发挥积极应用价值。
参考文献:
[1] 惠宏超,郭亚晶,熊智敏,等.高功率激光器自动准直系统图像处理的可信度评估[J].强激光与粒子束,2013,25(4):867-871.
[2] 涂春萍,甘岚,张旭,等.基于Linux下MiniGUI的图像处理GUI平台设计[J].华东交通大学学报,2011,28(2):55-59.
[3] 李佩斌,黄莹,赵誉婷, 等.基于DSP+FPGA的嵌入式图像处理系统设计[J].现代电子技术,2014,(20):95-98.
[4] 刘岩俊.嵌入式DSP图像处理系统设计与实现[J].国外电子测量技术,2013,32(9):11-14.