码迷,mamicode.com
首页 > 移动开发 > 详细

Android Camera 实时滤镜(三)

时间:2015-04-21 09:36:10      阅读:230      评论:0      收藏:0      [点我收藏+]

标签:android平台   多媒体   camera   

一、基于Android平台基本滤镜算法的实现

1Android提供了改变图像数值的方法ColorMatrix,通过ColorMatrix方法可以实现基本滤镜,如黑白、灰色、泛黄等效果。

 

2、通过ColorMatrix改变图像数值,生成变换矩阵,利用矩阵相乘,来改变每个点的像素值。

 Matrix =>

r1

r2

r3

r4

r5

g1

g2

g3

g4

g5

b1

b2

b3

b4

b5

a1

a2

a3

a4

a5


变化以后

R‘  =  R * r1  +  G * r2  +  B * r3  +  A * r4  +  r5;

G‘  =  R * g1  +  G * g2  +  B *g3  +  A * g4  +  g5;

B‘  =  R * b1  +  G * b2  +  B *b3  +  A * b4  +  b5;

A‘  =  R * a1  +  G * a2  +  B * a3  +  A * a4  +  a5;

1~3列是控制色相的,第4列是控制透明度的,第5列是分量的增加值

 

3RGBA系数值变化会修改图像的效果

1)对角线值为1.0,其他为0时,图像保证的是原图像

图像原图

R

1.0

0

0

0

0

G

0

1.0

0

0

0

B

0

0

1.0

0

0

A

0

0

0

1.0

0

 技术分享

2)对角线值若大于1.0,其他为0时,图像偏亮

图像偏亮

R

2.0

0

0

0

0

G

0

2.0

0

0

0

B

0

0

2.0

0

0

A

0

0

0

2.0

0

 技术分享

3)对角线值若小于1.0,其他为0时,图像偏暗

图像偏暗

R

0.5

0

0

0

0

G

0

0.5

0

0

0

B

0

0

0.5

0

0

A

0

0

0

0.5

0

技术分享

4)设定图像为灰色,通过查资料 R 0.3 G0.59 B 0.11

图像偏暗

R

0.3f

0.59f

0.11f

0

0

G

0.3f

0.59f

0.11f

0

0

B

0.3f

0.59f

0.11f

0

0

A

0

0

0

1.0

0

技术分享

4、根据以上的实现,实现基本滤镜的算法是

public Bitmap getBlackStyle(Bitmap src){
		

Bitmap dst = Bitmap.createBitmap(src.getWidth(),src.getHeight(), Config.ARGB_8888);
		Canvas canvas = new Canvas(dst);
		ColorMatrix cm = new ColorMatrix();
        //设定图像为灰色,通过查资料 R 0.3 G0.59 B 0.11
		cm.set(new float[] { 
				0.3f, 0.59f, 0.11f, 0, 0, 
				0.3f, 0.59f, 0.11f, 0, 0, 
				0.3f, 0.59f, 0.11f, 0, 0, 
				0, 0, 0, 1, 0 });
		Paint paint = new Paint();
		paint.setColorFilter(new ColorMatrixColorFilter(cm));
		canvas.drawBitmap(src, 0, 0, paint);
		// 保存图像
		canvas.save(Canvas.ALL_SAVE_FLAG);
        // 存储
		canvas.restore();
		return dst;
	}



 

三、后滤镜时代

在网上看到一些信息和相机应用,很多相机玩家对手机相机的使用是越来越多,作为手机相机的开发者需要有更多的创意和特性为手机相机添彩!如下几点相机的发展方向供大家参考:

技术分享

1实时滤镜

      VIDA 是一款来自国内团队的照相应用,它的一大特色就是实时滤镜,在拍摄的同时你已经可以预览到最终的成品。这是一个强化滤镜功能的方向。和单纯的加入新滤镜不同,实时滤镜把握住了所见即所得的精髓。

2GIF 动画

      GIFshop 是 一款快速制作定格动画的应用。它结合了动态画面的叙事能力,保留了图片的小体积特点。但 GIFshop 的问题也非常突出,比起记录生活,它更适合于创作一些幽默的动态小品。一旦涉及到 创作” ,用户的门槛就被无情地提高了。但让画面动起来的想法要比单纯的强化滤镜要走的更远一些。

3动态图片

      Cinemagram 制 作出来的图片可以只在某一特定区域中出现动态效果。你可以那它创建那种网上流行的会动的海报。比起 GIFshop ,它能够让普通的记事照片变得有点魔幻。由于应用的构思巧妙,因此适合套用在不同的场合中。用户的门槛相对较小,但收获却是挺大的。我将其看作是 GIFshop 的改进版本。

4声音+图片

      Picle 是 一款让你在拍摄相片的同时也记录下一段音频的应用。它的好处是让 画外音” 这一有趣的角色参与照片的叙事。相比上述应用,Picle 进入了另个维度,它考虑到图片的叙事瓶颈,并试图通过加入音频来突破。Picle 所面临的问题是,它建立了一种新的格式,而这种格式目前还只能在 Picle 体系内分享。

    后滤镜时代里各支团队在不同方向上设定了不同的瓶颈,并通过一定的方法来突破。思考的起点无一例外的定在了增强图片叙事能力之上。从目前的情况来看,有一些事项值得注意:

· 体积:不能因为增强了效果而变得臃肿。

· 题材:不能因为特别适合某种题材而狭隘了用户的使用场景。

· 格式:在现有流行的格式上入手,避免使用新格式。

· 门槛:在用户利益和使用复杂度上寻求平衡。

· 多媒体:在图片上做加法,但不能演变成拍摄视频。

      相信随着硬件技术的增强,手机将成为一类新的照相设备。它也许替代不了传统的相机,但它却能因为应用而变得不可替代。而可以预见的是,滤镜不会是手机照相的最后一站。

Android Camera 实时滤镜(三)

标签:android平台   多媒体   camera   

原文地址:http://blog.csdn.net/wyhuan1030/article/details/45165989

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!