【Android】图像变换

源码下载: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处理图像的数据结构的使用方法,熟悉了安卓系统中下拉选择菜单的使用。增加了自己在图像处理方面的编程经验。

时间: 2024-10-29 20:28:08

【Android】图像变换的相关文章

Android中图像变换Matrix的原理、代码验证和应用

转自 http://biandroid.iteye.com/blog/1399462 第一部分 Matrix的数学原理 在Android中,如果你用Matrix进行过图像处理,那么一定知道Matrix这个类.Android中的Matrix是一个3 x 3的矩阵,其内容如下: Matrix的对图像的处理可分为四类基本变换: Translate           平移变换 Rotate                旋转变换 Scale                  缩放变换 Skew    

Android中图像变换Matrix的原理、代码验证和应用(二)

注:本篇文章为转载文章,因为原文格式排版较乱,但是内容非常棒,所以整理一下,方便以后查看. 查看原文请戳:http://blog.csdn.net/pathuang68/article/details/6991988 Matrix介绍文章请戳:http://blog.csdn.net/pathuang68/article/details/6991867 package com.pat.testtransformmatrix; import android.app.Activity; import

Android Matrix(转)

Matrix的数学原理 平移变换 旋转变换 缩放变换 错切变换 对称变换 代码验证 Matrix的数学原理 在Android中,如果你用Matrix进行过图像处理,那么一定知道Matrix这个类.Android中的Matrix是一个3 x 3的矩阵,其内容如下: Matrix的对图像的处理可分为四类基本变换: Translate           平移变换 Rotate                旋转变换 Scale                  缩放变换 Skew          

Android图像处理之图形特效处理

一.Android变形矩阵--Matricx: 跟Android图像的色彩处理基本一样,只是将ColorMatrix换成了Matrix,ColorMatrix是4*5的矩阵,Matrix是3*3的.每个像素点表达了其坐标的X.Y信息: 当使用变换矩阵去处理每一个像素点的时候,与颜色矩阵的矩阵乘法一样,计算公式如下所示: 通常情况下,会让g=h=0,i=1,这样就使1=gX+hY+i    恒成立.因此,只需着重关注上面几个参数即可. 与色彩变换矩阵的初始矩阵一样,图形变换矩阵也有一个初始矩阵.就

Android Matrix

转自 :http://www.cnblogs.com/qiengo/archive/2012/06/30/2570874.html#code Matrix的数学原理 平移变换 旋转变换 缩放变换 错切变换 对称变换 代码验证 Matrix的数学原理 在Android中,如果你用Matrix进行过图像处理,那么一定知道Matrix这个类.Android中的Matrix是一个3 x 3的矩阵,其内容如下: Matrix的对图像的处理可分为四类基本变换: Translate           平移变

Android Bitmap面面观

转自android程序员:http://mp.weixin.qq.com/s?__biz=MzA4MjU5NTY0NA==&mid=404530070&idx=1&sn=e2580b69d6ec73dabf8160216aa6702a&scene=23&srcid=#rd 开通赞赏后的第一篇文章,仍然由大家熟悉的冯建同学投稿,他的这几篇文章可以说风格类似,都是某一个专题的详细整理,这次轮到Bitmap了.点击这里可以快速访问他的上一篇投稿: 你应该知道的那些Andr

终极大招之通过像素块调整实现图像变换

在上一篇文章中,我们实现了通过不同的渲染器设置来实现图像的图形变换,没有读过的朋友,可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4886651.html 在这一篇文章,迎来了图像图形变换系列的最终章.所以要讲一个终极大招,利用像素块调整从来实现不同的图像效果.这个将更加细致的实现图像变换. 一.基础知识 配合下面两张图,来解释一下什么叫通过像素快来调整图像变换.如下:                             左侧是原图,右侧

Android图像处理之Bitmap类

Bitmap是Android系统中的图像处理的最重要类之一.用它可以获取图像文件信息,进行图像剪切.旋转.缩放等操作,并可以指定格式保存图像文件.本文从应用的角度,着重介绍怎么用Bitmap来实现这些功能. 一.Bitmap的生成 1.1 BitmapFactory decode出Bitmap Bitmap实现在android.graphics包中.但是Bitmap类的构造函数是私有的,外面并不能实例化,只能是通过JNI实例化.这必然是 某个辅助类提供了创建Bitmap的接口,而这个类的实现通过

Android动画浅析

前言 在应用的开发中,动画是必不可少的一部分,否则很多视觉效果会显得特别突兀.今天我们就来了解一下Android中的动画库. 动画的分类 Android平台为我们提供了两类动画,Tween(补间动画)动画和Frame(帧)动画.Tween动画是通过对场景中的对象不断进行图像变换(平移.缩放.旋转等)来产生动画效果的:Frame动画则是顺序播放事先做好的每帧图像,类似于快速的幻灯片一样. 补间动画 Tween动画是通过预先定义一个动画,这个动画指定了图形变换的类型(旋转.平移.缩放等).启动时间.