【Android】图像变换
2016-05-04 21:51
501 查看
源码下载:http://download.csdn.net/detail/jsgaobiao/9510213
Ø 【实验目的】
使用A n d r o id系统进行图像变换,图像变换包括形状变换和颜色变换
– 图像变换:平移变换、尺度变换、旋转变换等。
– 颜色变换:冰冻效果、融炎效果、漫画效果、羽化效果、缩放模糊效果、LOMO特效、电影效果等
Ø 【实验器材】
Android Studio 1.5.1
Xiaomi Pad (7.9’’): Android 4.4.4 , 1536*2048 xhdpi
Ø 【实验原理】
本次实验涉及的变换分两种,第一类是图像变换,包括:
平移:
旋转:
缩放:
错切:
第二类变换是颜色变换,包括:
漫画: R= |g – b + g + r| * r / 256
G = |b – g + b + r| * r / 256
B = |b – g + b + r| * g / 256
冰冻: R= R – G – B
G = G – B – R
B = B – R – G
熔炎:R = R * 128 / (G + B + 1)
G = G * 128 / (B +R +1)
B = B * 128 / (R + G +1)
边缘: 相邻两个像素的差分
如下图所示,程序提供了两个Spinner分别供用户选择相应的颜色变换和形状变换的选项,并在屏幕的主要区域显示图像。
在程序的实现上,我是将原图读入保存为Bitmap,先对其做颜色变换,再做形状变换:
具体的形状变换和颜色变换,按照上文中给出的方法实现。
其中,旋转、缩放、错切三种效果可以利用Matrix类型自带的变换函数实现:
平移效果则是根据公式: ,逐像素进行位移。
颜色变换以冰冻效果为例:
冰冻效果就是按照公式:R = R – G – B;G = G – B – R;B = B – R – G
对图像的RGB进行重新计算。
由于每个像素的RGB值都被以二进制的格式保存在一个int类型中,因此我先将(I,j)像素的颜色信息保存在pix里,通过位运算提取他们的Alpha,R,G,B,4个通道的值,并进行重新计算后,更新图像的RGB值。
其他颜色变换的效果只要根据不同的公式进行计算即可。
在实际测试中我发现,对于本身缺少蓝色成分的图片,使用该冰冻变换的公式效果并不好,会使得得到的图片非常暗,所以该效果的变换公式还是有一定的缺陷的。
Ø 【小结】
我通过本次实验,了解了图像变换的相关算法和Android处理图像的数据结构的使用方法,熟悉了安卓系统中下拉选择菜单的使用。增加了自己在图像处理方面的编程经验。
Ø 【实验目的】
使用A n d r o id系统进行图像变换,图像变换包括形状变换和颜色变换
– 图像变换:平移变换、尺度变换、旋转变换等。
– 颜色变换:冰冻效果、融炎效果、漫画效果、羽化效果、缩放模糊效果、LOMO特效、电影效果等
Ø 【实验器材】
Android Studio 1.5.1
Xiaomi Pad (7.9’’): Android 4.4.4 , 1536*2048 xhdpi
Ø 【实验原理】
本次实验涉及的变换分两种,第一类是图像变换,包括:
平移:
旋转:
缩放:
错切:
第二类变换是颜色变换,包括:
漫画: R= |g – b + g + r| * r / 256
G = |b – g + b + r| * r / 256
B = |b – g + b + r| * g / 256
冰冻: R= R – G – B
G = G – B – R
B = B – R – G
熔炎:R = R * 128 / (G + B + 1)
G = G * 128 / (B +R +1)
B = B * 128 / (R + G +1)
边缘: 相邻两个像素的差分
如下图所示,程序提供了两个Spinner分别供用户选择相应的颜色变换和形状变换的选项,并在屏幕的主要区域显示图像。
在程序的实现上,我是将原图读入保存为Bitmap,先对其做颜色变换,再做形状变换:
具体的形状变换和颜色变换,按照上文中给出的方法实现。
其中,旋转、缩放、错切三种效果可以利用Matrix类型自带的变换函数实现:
平移效果则是根据公式: ,逐像素进行位移。
颜色变换以冰冻效果为例:
冰冻效果就是按照公式:R = R – G – B;G = G – B – R;B = B – R – G
对图像的RGB进行重新计算。
由于每个像素的RGB值都被以二进制的格式保存在一个int类型中,因此我先将(I,j)像素的颜色信息保存在pix里,通过位运算提取他们的Alpha,R,G,B,4个通道的值,并进行重新计算后,更新图像的RGB值。
其他颜色变换的效果只要根据不同的公式进行计算即可。
在实际测试中我发现,对于本身缺少蓝色成分的图片,使用该冰冻变换的公式效果并不好,会使得得到的图片非常暗,所以该效果的变换公式还是有一定的缺陷的。
Ø 【小结】
我通过本次实验,了解了图像变换的相关算法和Android处理图像的数据结构的使用方法,熟悉了安卓系统中下拉选择菜单的使用。增加了自己在图像处理方面的编程经验。
相关文章推荐
- Android性能专项测试测试点指导(一)
- Android开发设置EditText不获得焦点
- Android快速开发框架-ZBLibrary 源码分享
- Android开发艺术探索——新的征程,程序人生路漫漫!
- Android开发艺术探索——新的征程,程序人生路漫漫!
- 对Android中“回调”的理解
- Android 主题切换 小结
- Android自动化压力测试之Monkey Test 异常解读(五)
- Android产品式开发:
- Android开发中重要的类
- Android 主题与style概述
- BroadcastReceiver、EventBus的优缺点
- android源码解析(二十)-->Dialog取消绘制流程
- Android 自定义拼接图片,点击小图位置时,绘制在上层
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- android 开源项目集合
- Android最佳实践之Notification、下拉刷新、内存及性能建议等
- 玩转Android之在线视频播放控件Vitamio的使用
- 玩转Android之在线视频播放控件Vitamio的使用
- 玩转Android之在线视频播放控件Vitamio的使用