基于android的图像处理软件设计内容摘要:

则可通过 JNI 调用。 如果需要用底层语言实现一个小型的时间敏感代码,比如 汇编,然后在 java 程序中调用这些功能。 (l)编写带有 native 声明的方法的 java 类, native 所声明的方法既是 java 调用但其实现过程是由别的语言完成的。 (2)使用 javac 命令编译所编写的 java 类,生成可以在 JVM 运行的字节码。 使用 javahjni 命令生成扩展名为 .h 的头文件。 在自动生成的头文件中将声明有待实现的 C函数。 (3)使用 C/C++实现 .h文件中所声明的方法。 (4)将 C/C++程序文件编译成动态链接库文件,然后将动态库加载到系统中,然后应用程序通过 native 接口调用即可。 7 实现 JNI 的步骤如图 所示 : 图 JNI 开发流程 8 3 基于 android 平台图像处理软件设计 基于 Android 平台图像处理软件整体层次结构 本软件采用层次化的结构设计。 如图 所示 : 图 软件整体层次结构 是整个软件的整体层次图,分为用户视图层,系统控制层,业务逻辑处理层。 用户视图层:为用户呈现完美的 UI( User Interface)界面, UI 界面是 对软件的人机交互、操作逻辑、界面美观的整体设计。 便于 接受用户输入,更新页面信息及状态。 在本软件中用户视 图层由各个图像处理功能的用户界面组成。 主要包括图像编辑界面、图像增强界面、图像特效界面、图像边框界面。 系统控制层:负责接收用户视图层传递的数据,并将数据交给对应的业务逻 辑处理层去处理。 本软件中起着控制作用的主要包括一些页面组件 (按钮、滑动条,图像视图、下拉列表,画廊视图等 )监听器及 文件。 业务逻辑处理层:接收数据,并进行相应的业务逻辑处理,然后将处理结果 交给控制层,然后由控制层返回给用户视图层,实现用户所需要的功能。 如图 所示: 9 图 软件功能层次结构 本软件主要实现的功能有: 图像编辑处理、图像增强处理、图像特效处理、图像边框处理。 图像编辑处理:通过监听图像编辑界面中的 Button 控件,获取用户的输入信息,由 Button 监听器及 文件获取数据, 调用 Matrix 类中的 Rotate 方法 实现对图像左旋,右旋,水平对称,垂直对称的处理,还可以调用算法对图像进行锐化的处理。 图像增强处理:通过监听图像增强界面中的 SeekBar 控件,获取用户的输入信息,由 SeekBar 监听器及 文件获取数据, 调用算法图像的亮度、饱和度、色相进行任意的调节。 图像特效处理:通过监听图像特效界面中的 Imageview 控件,获取用户的输入信息,由 Imageview 监听器及 文件获取数据,调用算法实现对图像 黑白、二值化、霓虹、浮雕、底片、光晕、冰冻、怀旧等效果的处理。 图像边框处理:通过监听图像边框界面中的 Imageview 控件,获取用户的输入信息,由 Imageview 监听器及 文件获取数据,调用算法实现图像不同类型的边框的添加。 10 基于 Android 平台图像处理软件设计 基于 Android 平台的图像处理软件在设计时进行模块化划分,层次结构化设计。 模块之间通过接口或者数据进行通信,降低模块间的藕合性。 图像编辑模块设计 图像编辑模块主要实现了对图像的旋转和锐化功能。 使用 ImageView(图像视图)控件来显示需要被处理的图像,通过监听用户 Button(按钮)控件响应事件实现对图像的左旋、右旋、水平旋转、垂直旋转、重置、锐化等功能。 处理完后可以通过监听用户 Button(按钮)控件响应事件来保存图像或返回到上一个活动窗口。 该模块的 设计层次结构如图 所示: 图 图像编辑模块设计 层次结构 用户视图层 :显示用户编辑选择的界面,接收用户的界面输入。 在本模块中 用户视图层是由各个 Button(按钮)控件和 ImageView(图像视图)控件组成。 在本模块中用户的界面是主要通过 XML 形式实现。 本模块的用户视图界面由 构成。 系统控制层 :负责接收用户视图层传递的数据,并将数据交给对应的业务逻 辑类去处理。 本软件中 的系统控制层由 Button(按钮)和 ImageView(图像视图)监听器及 完成。 业务逻辑处理层 :接收数据,处理用户选择的 Button(按钮)控件事件。 并 11 将处理后的图像返回到 ImageView(图像视图)控件中显示。 本模块由 构成。 图像增强模块设计 图像增强模块设计主要实现了对图像的饱和度、亮度、色相进行调节。 使用 ImageView(图像视图)控件来显示需要被处理的图像,使用 popupwindow(弹出框)控件来显示或隐藏饱和度、亮度、色相的 SeekBar 控件,然后通过监听SeekBar(滑动条)控件的响应事件来调节实现对图像处理,同样 处理完后可以通过获取用户 Button(按钮)控件响应事件来保存图像或返回到上一个活动窗口。 该模块的设计层次结构如图 所示: 图 图像增强模块设计 层次结构 用户视图层 :显示用户编辑选择的界面,接收用户的界面输入。 在本模块中 用户视图层是由各个 SeekBar(滑动条)控件、 Button(按钮)控件和 ImageView(图像视图)控件组成。 在本模块中用户的界面是主要通过 XML 形式实现。 本模块的用户视图界面由 构成。 系统控制层 :负责接收用户视图层传递的数据,并将数据交给对应 的业务逻 辑类去处理。 本软件中 的系统控制层由 SeekBar(滑动条)、 Button(按钮)和ImageView(图像视图)监听器及 完成。 12 业务逻辑处理层 :接收数据,处理用户选择的 Button(按钮)控件事件。 并将处理后的图像返回到 ImageView(图像视图)控件中显示。 本模块由 构成。 图像特效模块设计 图像特效模块设计主要实现了对图像的黑白、二值化、霓虹、浮雕、底片、光晕、冰冻、怀旧等效果的处理。 使用 ImageView(图像视 图)控件来显示需要被处理的图像,使用 Gallery(画廊视图)控件来显示黑白、二值化、霓虹、浮雕、底片、光晕、冰冻、怀旧等效果的 ImageView(图像视图)控件,然后通过获取 ImageView(图像视图)控件的响应事件来调节实现对图像处理,同样处理完后可以通过获取用户 Button(按钮)控件响应事件来保存图像或返回到上一个活动窗口。 该模块的设计层次结构如图 所示: 图 图像特效模块设计 层次结构 用户视图层 :显示用户编辑选择的界面,接收用户的界面输入。 在本模块中 用户视图层是由各个 Gallery(画廊视图)控件、 Button(按钮)控件和 ImageView(图像视图)控件组成。 在本模块中用户的界面是主要通过 XML 形式实现。 本模块的用户视图界面由 构成。 13 系统控制层 :负责接收用户视图层传递的数据,并将数据交给对应的业务逻 辑类去处理。 本软件中 的系统控制层由 Gallery(画廊视图)、 Button(按钮)和ImageView(图像视图)监听器及 完成。 业务逻辑处理层 :接收数据,处理用户选择的 ImageView(图像视图)控件事件。 并将处理 后的图像返回到 ImageView(图像视图)控件中显示。 本模块由 构成。 图像边框模块设计 图像边框模块设计主要实现了对图像边框的添加功能。 使用 ImageView(图像视图)控件来显示需要被处理的图像,使用 Gallery(画廊视图)控件来显示有不同类型的边框效果的 ImageView(图像视图)控件。 通过监听 ImageView(图像视图)控件的响应事件来调节实现对图像处理,同样处理完后可以通过获取用户 Button(按钮)控件响应事件来保存图像或返回到上一个活动窗口。 该模块的设计 层次结构如图 所示: 图 图像边框模块设计 层次结构 用户视图层 :显示用户编辑选择的界面,接收用户的界面输入。 在本模块中 14 用户视图层是由各个 Gallery(画廊视图)控件、 Button(按钮)控件和 ImageView(图像视图)控件组成。 在本模块中用户的界面是主要通过 XML 形式实现。 本模块的用户视图界面由 构成。 系统控制层 :负责接收用户视图层传递的数据,并将数据交给对应的业务逻 辑类去处理。 本软件中 的系统控制层由 Gallery(画廊视图)、 Button(按钮)和ImageView(图像视图)监听器及 完成。 业务逻辑处理层 :接收数据,处理用户选择的 ImageView(图像视图)控件事件。 并将处理后的图像返回到 ImageView(图像视图)控件中显示。 本模块由 构成。 15 4 基于 android 平台图像处理算法分析 图像编辑 通过 API 函数的调用和编写一些算法实现对图像进行左右、水平、垂直旋转的功能,其中 主要用到了 Android 中的 Matrix 类,实现坐标代换。 以及通过SeekBar 控 件实现对图像的锐化功能,其中用到了拉普拉斯算法。 旋转 在 Android 中 , Matrix 类可实现图像的旋转, Android 中的 Matrix 类 是一个 3 x 3的矩阵,其内容如下: M SCA L E _ X _ __ _ __ 0 ) _ 1 _ 2M S KE W X M TR A NS XM S KE W Y M S CA LE Y M TR A NS YM P E R S P M P E R S P M P E R S P Matrix 的对图像的处理可 用 Rotate 方法来实现 旋转变换。 1. 围绕坐标原点旋转 : 假定有一个点 00( , )Px y ,相对坐标原点顺时针旋转  后的情形,同时假定 P 点离坐标原点的距离 为 r。 那么, 000000c ossi nc os( ) c os c os si n si n c os si nsi n( ) si n c os c os si n c os si nxryrx r r r x yy r r r y x                         16 如果用矩阵,就可以表示为: 00c os sin 0sin c os 01 0 0 1 1xxyy                          2. 围绕某个点旋转 如果是围绕某个点 ( , )ppxy 顺时针旋转  ,那么可以用矩阵表示为: 00c o s s in 0s in c o s 01 0 0 1 1xyx x xy y y                          可以化为: 0000c os sin c os sinsin c os sin c os1 0 0 1 11 0 c os sin 0 1 00 1 sin c os 0 0 10 0 1 0 0 1 0 0 1 1p p pp p pppx x y x xy x y x yx x xy y y                                                                         很显然, ( 1) 0010010 0 1 1ppxxyy           是将坐标原点移动到点 ( , )ppxy 后, ( , )ppPx y 的新坐标。 ( 2) 00c os sin 0 1 0sin c os 0 0 10 0 1 0 0 1 1ppxxyy                          是将上一步变换后的 00( , )Px y , 围绕新的坐标原点顺时针旋转 。 ( 3) 17 001 0 c o s sin 0 1 00 1 sin c o s 0 0 10。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。