Android Camera 實時濾鏡(三)
一、基於Android平臺基本濾鏡演算法的實現
1、Android提供了改變影象數值的方法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列是分量的增加值
3、R、G、B、A係數值變化會修改影象的效果
(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 是一款來自國內團隊的照相應用,它的一大特色就是實時濾鏡,在拍攝的同時你已經可以預覽到最終的成品。這是一個強化濾鏡功能的方向。和單純的加入新濾鏡不同,實時濾鏡把握住了所見即所得的精髓。
(2)GIF 動畫
GIFshop 是 一款快速製作定格動畫的應用。它結合了動態畫面的敘事能力,保留了圖片的小體積特點。但 GIFshop 的問題也非常突出,比起記錄生活,它更適合於創作一些幽默的動態小品。一旦涉及到 “創作” ,使用者的門檻就被無情地提高了。但讓畫面動起來的想法要比單純的強化濾鏡要走的更遠一些。
(3)動態圖片
Cinemagram 制 作出來的圖片可以只在某一特定區域中出現動態效果。你可以那它建立那種網上流行的“會動的海報”。比起 GIFshop ,它能夠讓普通的記事照片變得有點魔幻。由於應用的構思巧妙,因此適合套用在不同的場合中。使用者的門檻相對較小,但收穫卻是挺大的。我將其看作是 GIFshop 的改進版本。
(4)聲音+圖片
Picle 是 一款讓你在拍攝相片的同時也記錄下一段音訊的應用。它的好處是讓 “畫外音” 這一有趣的角色參與照片的敘事。相比上述應用,Picle 進入了另個維度,它考慮到圖片的敘事瓶頸,並試圖通過加入音訊來突破。Picle 所面臨的問題是,它建立了一種新的格式,而這種格式目前還只能在 Picle 體系內分享。
後濾鏡時代裡各支團隊在不同方向上設定了不同的瓶頸,並通過一定的方法來突破。思考的起點無一例外的定在了增強圖片敘事能力之上。從目前的情況來看,有一些事項值得注意:
· 體積:不能因為增強了效果而變得臃腫。
· 題材:不能因為特別適合某種題材而狹隘了使用者的使用場景。
· 格式:在現有流行的格式上入手,避免使用新格式。
· 門檻:在使用者利益和使用複雜度上尋求平衡。
· 多媒體:在圖片上做加法,但不能演變成拍攝視訊。
相信隨著硬體技術的增強,手機將成為一類新的照相裝置。它也許替代不了傳統的相機,但它卻能因為應用而變得不可替代。而可以預見的是,濾鏡不會是手機照相的最後一站。