999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

影視后期個性化摳像插件的開發(fā)

2015-07-02 00:19:19
關(guān)鍵詞:功能

王 楠

(安徽電子信息職業(yè)技術(shù)學(xué)院 軟件學(xué)院,安徽 蚌埠 233030)

影視后期個性化摳像插件的開發(fā)

王 楠

(安徽電子信息職業(yè)技術(shù)學(xué)院 軟件學(xué)院,安徽 蚌埠 233030)

在分析影視后期摳像插件系統(tǒng)設(shè)計及工作原理的基礎(chǔ)上,設(shè)計了影視后期的個性化摳像定制插件“Basic Key”,給出了此摳像插件的實現(xiàn)方法及此插件的藍(lán)屏摳像方法、插件各選項的實現(xiàn)算法,并介紹了此摳像插件的應(yīng)用平臺及使用方法。

影視制作;摳像插件;色度鍵;個性化

摳像[1]是影視后期制作中的一種常用技術(shù),簡言之就是將畫面中一種或多種顏色變成透明,從而去除畫面中不需要的部分,保留用戶需要的部分。在影視后期制作中,摳像技術(shù)是重點之一,這里所討論的軟件是Adobe After Effects CS4。After Effects是使用范圍最廣的合成軟件之一,并且深受專業(yè)人士、業(yè)余愛好者、學(xué)生的喜愛[2]。但是,After Effects中的內(nèi)置摳像特效設(shè)置過于專業(yè),不適于初級制作。由于影視后期領(lǐng)域在國內(nèi)起步晚,After Effects目前在國內(nèi)主要處于應(yīng)用階段,其插件的開發(fā)處于起步階段。因此,對軟件功能進(jìn)行優(yōu)化、開發(fā)適合國內(nèi)影視后期教學(xué)及應(yīng)用的插件很有必要。故本文以擴(kuò)展After Effects摳像特效、方便使用為出發(fā)點,定制了一款個性化摳像插件,以改善After Effects摳像特效,使其更利于普及推廣。

1 影視后期摳像插件系統(tǒng)設(shè)計及工作原理

1.1 教學(xué)摳像插件工作原理

在After Effects中,對需要摳像的圖層(Layer)添加了此摳像插件后,就同時啟動了插件,通過After Effects SDK調(diào)用和啟動After Effects的內(nèi)部參數(shù),掌握了系統(tǒng)操作權(quán),同時為用戶和After Effects各個模塊之間提供信息傳遞和響應(yīng),實現(xiàn)摳像插件和用戶之間的交互。摳像插件與After Effects內(nèi)部的通信通過After Effects SDK實現(xiàn),SDK將系統(tǒng)控制模塊的信息與命令傳遞給After Effects內(nèi)對應(yīng)的模塊,以便模塊的控制與調(diào)用[3],摳像系統(tǒng)工作原理如圖1所示[4]。

1.2 插件選項設(shè)計

將After Effects摳像特效的特點進(jìn)行分析、比較,結(jié)合豐富的摳像教學(xué)與實踐經(jīng)驗,設(shè)計摳像插件的屬性選項,如圖2所示。

1.3 界面設(shè)計

本課題開發(fā)的插件命名為“基礎(chǔ)摳像”(Basic Key),按照前文對插件原理、插件選項的設(shè)計與描述,插件在After Effects中的參數(shù)控制界面位于特效控制(Effect Controls)面板中。用戶對圖層添加了此插件后,After Effects就會自動啟動此插件,并打開Effect Controls面板,展示其參數(shù)控制界面。此插件的參數(shù)控制界面設(shè)計如圖3所示。

1.4 工作流程

根據(jù)After Effects插件的工作原理,結(jié)合此插件的功能模型,分析得出此摳像插件的工作流程如圖4所示。

2 系統(tǒng)開發(fā)工具

本課題所研究的摳像插件適用于After Effects CS4軟件。此摳像插件以工作站或配置比較高的個人計算機(jī)為硬件開發(fā)平臺,操作系統(tǒng)采用Windows XP / Windows 7系列,開發(fā)工具采用面向?qū)ο蟮目梢暬幊誊浖﨧icrosoft Visual C++6.0及Adobe After Effects CS4 SDK。

3 摳像插件主功能具體實現(xiàn)

結(jié)合After Effects CS4 SDK工具,在Visual C++6.0中編寫程序,制作“基礎(chǔ)摳像”(Basic Key)插件。摳像插件系統(tǒng)中主要功能的實現(xiàn)算法和代碼如下所示。

3.1 提取顏色

使用吸管工具在背景提取顏色,是使用“基礎(chǔ)摳像”(Basic Key)插件進(jìn)行摳像的第一步,即讀取畫面中某一點(x,y)的像素值,返回BYTE*。對于計算機(jī)圖像而言,顏色表示方法通常有兩種:RGB(R:紅色,G:綠色,B:藍(lán)色,取值范圍均為0~255)和HSB(H:色相,取值范圍是0°~360°;S:飽和度,取值范圍是0~100%;B:亮度,取值范圍是0~100%),所以分別編寫了兩種顏色模型下的取色部分代碼。此功能對應(yīng)的VC++編程代碼:

//讀取(x,y)點的RGB像素值,返回BYTE*,順序是R,G,B

BYTE*BasicKeyDoc::cvGetpixel(IplImage* img, int x, int y)

{BYTE cvpixel[3];

cvpixel[2]=BYTE((img->imageData + img->widthStep*y)[x*3]);

cvpixel[1]=BYTE((img->imageData + img->widthStep*y)[x*3+1]);

cvpixel[0]=BYTE((img->imageData + img->widthStep*y)[x*3+2]);

return cvpixel;

}

//讀取(x,y)點的HSB像素值,返回BYTE* 順序是H,S,B(設(shè)為8 bit位深度時)

uchar* BasicKeyDoc::

cvGetpixelHSV(IplImage* img,int x,int y)

{

return &((uchar*)(img->imageData + img->widthStep*y))[x*3];

BYTE cvpixel[3];

cvpixel[0]=BYTE((img->imageData + img->widthStep*y)[x*3]);

cvpixel[1]=BYTE((img->imageData + img->widthStep*y)[x*3+1]);

cvpixel[2]=BYTE((img->imageData + img->widthStep*y)[x*3+2]);

return cvpixel;

}

//寫入(x,y)點的RGB像素值,返回BOOL,對應(yīng)代碼為

BOOL BasicKeyDoc::cvSetPixel(

IplImage* img, int x, int y, int R, int G, int B)

{

(img->imageData + img->widthStep*y)[x*3]=B;

(img->imageData + img->widthStep*y)[x*3+1]=G;

(img->imageData + img->widthStep*y)[x*3+2]=R;

return true;

}

//寫入(x,y)點的HSB像素值,返回BOOL 順序是H,S,B(設(shè)為8 bit位深度時)

BOOL BasicKeyDoc::

cvSetPixelHSB(IplImage* img, int x, int y, int H, int S, int B)

{

(img->imageData + img->widthStep*y)[x*3]=int(H/2);

(img->imageData + img->widthStep*y)[x*3+1]=S;

(img->imageData + img->widthStep*y)[x*3+2]=B;

return true;

}

3.2 藍(lán)屏摳像過程

本摳像系統(tǒng)采用顏色摳像的方法,利用背景與前景的顏色差別,把單色的背景去除,原理類似于通常所說的色度鍵(Chroma Keying)。由于摳像背景大多數(shù)選擇藍(lán)色,所以色度鍵通常也稱為藍(lán)屏摳像(Blue Screen)?!盎A(chǔ)摳像”(Basic Key)插件主要運用的就是藍(lán)屏摳像技術(shù)。

藍(lán)屏摳像編程原理:設(shè)畫面中取色點像素的RGB顏色值用sRGB表示,周圍其他像素的RGB顏色值用bRGB表示;設(shè)不透明度Alpha用A表示,取值范圍為[0,1];設(shè)置一個取色的容差值,以T表示。取色點與其他像素之間的顏色距離用|sRGB-bRGB|表示。

藍(lán)屏摳像過程,即選擇吸管工具在畫面中某一點像素拾取顏色后,將該像素的A值設(shè)置為0;計算畫面中其他像素與該點的顏色距離,若|sRGB-bRGB|∈[0,T],則相應(yīng)像素的A值也設(shè)為0;若顏色距離不屬于此范圍,則將其作為混合像素,區(qū)分其前景顏色和背景顏色(吸取顏色)的混合比例,計算該像素的A值。

3.3 Alpha通道調(diào)整

前文已描述,高級摳像功能是此摳像插件的核心模塊,也是優(yōu)于After Effects內(nèi)置摳像特效的關(guān)鍵部分。在“基礎(chǔ)摳像”(Basic Key)插件中,高級摳像功能對應(yīng)的選項包括:“屏幕蒙版”(Screen Matte)選項組中的“修剪黑場”(Clip Black),“修剪白場”(Clip White),“屏幕柔化”(Screen Softness)及“屏幕增益”(Screen Gain)等,其中又以“修剪黑場”、“修剪白場”、“屏幕柔化”最為關(guān)鍵,因為對于用戶而言,要通過摳像插件得到一個比較完美的Alpha通道,進(jìn)而獲得干凈、準(zhǔn)確的摳像效果,這3個參數(shù)通常都要涉及[6]。下面就對其算法設(shè)計和編程代碼進(jìn)行詳細(xì)描述。

3.3.1 “修剪黑場”和“修剪白場”

修剪黑場(Clip Black),調(diào)整Alpha通道中的暗部區(qū)域,其初始值為0,取值范圍在0~100。增大此選項值可以去除更多背景,但參數(shù)過大可能會導(dǎo)致前景也一起消失。

修剪白場(Clip White),調(diào)整Alpha通道中的亮部區(qū)域,其初始值為100,取值范圍在0~100。減小此選項值可以使前景盡量完整,但參數(shù)過小則可能導(dǎo)致部分背景無法去除。

選項功能實現(xiàn)的算法設(shè)計及代碼編寫如下:

(1)讀取圖像,獲取所有像素點的位置(坐標(biāo))值和顏色(RGB)值。在程序中,將RGB保存在二維數(shù)組pixel_RGB[sum][3]中,sum表示像素的個數(shù),同時像素按照先行后列的順序存儲,通過行數(shù)、列數(shù)可以映射到對應(yīng)的坐標(biāo),顏色的保存順序為R,G,B。

(2)用戶通過使用“屏幕顏色”選項的吸管指定一點顏色,獲取該點的RGB值。此步驟的實現(xiàn)代碼在前文已描述。

(3)遍歷2維數(shù)組,計算各個像素點顏色值與所選點RGB值的差距color_distance。這里采用的是歐氏距離[7]計算方法。

//這里以歐式距離計算方法為例,因為R,G,B值的范圍均為[0.0,255.0],則max_color_distance 參數(shù)取計算得到的最大顏色間距值。

//clip black 和clip white取值范圍為[0.0,100.0]

float dist_RGB(float r0, float g0, float b0, float r1, float g1, float b1)

{

float color_distance;

color_distance=sqrt(pow(r1-r0, 2) + pow(g1-g0, 2) + pow(b1-b0, 2));

return color_distance;

}

(4)將用戶輸入的“輸入黑場”(Clip Black)和“輸入白場”(Clip White)數(shù)值轉(zhuǎn)化為對應(yīng)的距離值。

float clip_to_distance(float clip, float max_color_distance, int t)

//將Clip值轉(zhuǎn)化為對應(yīng)的距離值

{ float ClipValue = 0.0;

if (t == 0) //t = 0 時,計算將Clip Black轉(zhuǎn)化為距離值

{ float originClipBlack=

0.2*max_color_distance;

ClipValue = ( (max_color_distance - originClipBlack)*clip )/100.0 +

originClipBlack;

}

else if (t == 1)

//t = 1時, 計算將Clip White轉(zhuǎn)化為距離值

{

float originClipWhite=

0.8*max_color_distance;

ClipValue = ( originClipWhite*clip ) / 100.0;

}

return ClipValue;

}

此為舉例說明,如將clip_black=0.0轉(zhuǎn)化為對應(yīng)的backClipValue=0.2*max_color_distance(表示color_distance的最大顏色差距值);

clip_white=100.0轉(zhuǎn)化為frontClipValue=0.8*max_color_distance。

(5)通過backClipValue和frontClipValue以及color_distance計算各個像素點的不透明度值opacity,代碼如下:

bool pixel_opacity(float r, float g, float b, float *pixelOpacity, float clip_black, float clip_white)

{

float color_distance[sum];

//sum指總像素點,像素按先行后列

float max_color_distance = 0.0;

for (int i = 0; i < sum; ++ i)

{

float r1 = pixel_RGB[i][0];

float g1 = pixel_RGB[i][1];

float b1 = pixel_RGB[i][2];

color_distance[i] = dist_RGB(r, g, b, r1, g1, b1);

if (max_color_distance < color_distance)

{ max_color_distance = color_distance; }

}

float backClipValue=clip_to_distance

(clip_black, max_color_distance, 0);

//將clip back 轉(zhuǎn)化為顏色的距離判定點

float frontClipValue=clip_to_distance

(clip_whilte, max_color_distance,1);

//將clip white 轉(zhuǎn)化為顏色的距離判定點

for (int i = 0; i < sum; ++ i)

{ if (color_distance <= backClipValue)

//小于等于backClipValue值,取完全透明

{ pixelOpacity[i] = 0.0; }

else if(color_distance>backClip

Value&&color_distance

//在backClipValue與frontClipValue之間,取半透明

{

pixelOpacity[i]=(color_distance-

backClipValue)/(frontClipValue-

backClipValue);

}

else //大于等于frontClipValue值,取完全不透明

{

pixelOpacity[i] = 1.0;

}

}

return true;

}

通過增加backClipValue與frontClipValue的值,得到Color_distance與Opacity的關(guān)系如圖5所示。

(6)依據(jù)各像素點的不透明度生成摳像結(jié)果。

3.3.2 屏幕柔化

屏幕柔化(Screen Softness),用于對初步摳像得到的Alpha通道進(jìn)行柔化處理[8]。該選項默認(rèn)值為0,最大值由摳像的具體畫面大小決定?!捌聊蝗峄边x項的原理是通過調(diào)整Alpha通道的模糊度,進(jìn)而調(diào)整整個畫面,可以去除摳像可能產(chǎn)生的雜點、生成邊緣羽化等效果。本文中,對此功能的實現(xiàn)采用高斯模糊算法。

從數(shù)學(xué)的角度來看,圖像的高斯模糊過程就是圖像與正態(tài)分布做卷積。由于正態(tài)分布又叫作高斯分布,所以這項技術(shù)就叫作高斯模糊。高斯模糊是一種圖像模糊濾波器,它用正態(tài)分布計算圖像中每個像素的變換。在2維空間定義為

(1)高斯模糊矩陣計算:

//計算高斯模糊矩陣,n表示n×n矩陣,rho表示標(biāo)準(zhǔn)方差

bool Gaussian_matrix(float *matrix_n, int n, float rho)

{ for (int i = 0; i < n; ++ i)

{

for (int j = 0; j < n; ++ j)

{

matrix_n[i*n+j] = 1 / (2 * pi * rho * rho);

matrix_n[i*n+j] *= exp((- (pow(i - 2, 2) + pow(j - 2, 2))) / (2 * rho * rho));

}

}

return true;

}

(2)模糊處理后的顏色計算:

//對于Alpha通道,計算該像素點經(jīng)過高斯模糊后的顏色值

float Gausssian_compute(float *pixel_Alpha, float *matrix_n, int n, int m);

{

float changeAlpha = 0.0;

int t = floor(n/2);

m = m - width - t;

for (int i = 0; i < n; ++ i)

{

for (int j = 0; j < n; ++ j)

{

changeAlpha += pixel_Alpha[m] * matrix_n[i*n+j];

m ++;

}

m = m + width - n + 1;

}

return changeAlpha;

}

(3)進(jìn)行高斯模糊處理:

//對Alpha通道進(jìn)行高斯模糊處理

bool Gaussian_Blur(float *pixel_Alpha, float softness, int n)

{ if (0 == softness)

{ return false; }

float rho = softness/100.0 + 0.5;

if (rho > 10.0)

{ rho = 10.0; }

float *matrix_n = (float*)malloc(n*n*sizeof(float));

bool find = Gaussian_matrix(matrix_n, n, rho);

for (int i = 0; i < width; ++ i)

{

for (int j = 0; j < height; ++ j)

{

if (2*(i +1) < n || 2*i + n > 2 * width || 2*(j +1) < n || 2*j + n > 2 * width)

{

continue;

}

int m = i * width + j;

pixel_Alpha[m] = Gausssian_compute(pixel_Alpha, matrix_n, n, m);

}

}

return true;

}

3.3.3 邊緣收縮/擴(kuò)展

此選項功能的實現(xiàn)算法:以邊緣擴(kuò)展為例,在摳像前景的邊緣上取一點,作為圓心,以邊緣擴(kuò)展值為半徑(單位為像素),以邊緣上某一點為起點,圓心沿著邊緣移動,當(dāng)用戶輸入值為正值時,將圓移動經(jīng)過的背景像素區(qū)域重新賦予原背景顏色值;當(dāng)用戶輸入值為負(fù)值時,將圓移動覆蓋的前景像素區(qū)域的不透明度設(shè)置為0,在視覺效果上體現(xiàn)為像素不可見,即邊緣向內(nèi)收縮。

圖6 邊緣收縮/擴(kuò)展算法

4 結(jié)束語

研究開發(fā)的個性化摳像插件雖然取得了良好的應(yīng)用成效,但對于After Effects功能的研究和插件的開發(fā)還需要更進(jìn)一步深入系統(tǒng)研究,逐步完善。本文為影視后期制作中的摳像應(yīng)用提出了一種新的思路并實現(xiàn)了其解決的方法。在后續(xù)研究中,可以將此Basic Key插件進(jìn)行升級,使其能適用于After Effects CS5、CS6……;還可以將Basic Key插件的功能進(jìn)行進(jìn)一步的擴(kuò)展,使其功能更加強(qiáng)大,如增加一些專業(yè)摳像插件中特有的屬性選項,讓使用者能了解到專業(yè)摳像插件的功能;還可以優(yōu)化算法,編寫效率更高的代碼,使摳像系統(tǒng)在容量上更精簡、盡量少占用計算機(jī)資源,以提高運行速率。

[1]Adobe公司. Adobe After Effects CS4經(jīng)典教程[M]. 北京: 人民郵電出版社,2009: 202.

[2] Lee Lanier. 專業(yè)數(shù)字合成:必備的工具和技術(shù)[M]. 北京: 人民郵電出版社,2012: 1.

[3] 胡垂立. 基于After Effects SDK的粒子系統(tǒng)在高職教學(xué)中的應(yīng)用[D]. 上海: 華東師范大學(xué),2011.

[4] 趙剛,唐慧佳. Adobe After Effects插件原理及其實現(xiàn)[J]. 計算機(jī)應(yīng)用研究,2000,17(11): 99-100,103.

[5] 求是科技. Visual C++數(shù)字圖像處理典型算法及實現(xiàn)[M]. 北京: 人民郵電出版社,2006: 6.

[6] L.Lanier. 專業(yè)數(shù)字合成:必備的工具和技術(shù)[M]. 北京: 人民郵電出版社,2012: 86.

[7] 約翰遜. 近代歐式幾何學(xué)[M]. 哈爾濱: 哈爾濱工業(yè)大學(xué)出版社,2012: 56

[8] M.Christiansen. After Effects CS4完全剖析[M]. 北京: 人民郵電出版社,2009: 72

Development of Movie Keying Individuational Plug-in

WANG Nan

( School of Software, Anhui Vocational College of Electronics and Information Technology, Bengbu 233030, China)

We analyze the system design, working principle of movie keying plug-in and customizes, and developes a individuational keying plug-in, “Basic Key”. We discuss the realization method of this keying plug-in, and introduce the algorithm of blue-key method of it, the algorithm of all options. It introduces the application platform and usage method of this keying plug-in.

film and television production, keying plug-in, chroma keying, individuation

2015-05-14

王楠,女,安徽蚌埠人,碩士,安徽電子信息職業(yè)技術(shù)學(xué)院講師,研究方向為影視后期制作、平面設(shè)計、三維設(shè)計等。

時間:2016-1-5 13:01 網(wǎng)絡(luò)出版地址:http://www.cnki.net/kcms/detail/34.1150.N.20160105.1301.013.html

TP311

A

1007-4260(2015)04-0052-06

10.13757/j.cnki.cn34-1150/n.2015.04.013

猜你喜歡
功能
拆解復(fù)雜功能
鐘表(2023年5期)2023-10-27 04:20:44
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
基層弄虛作假的“新功能取向”
深刻理解功能關(guān)系
鉗把功能創(chuàng)新實踐應(yīng)用
關(guān)于非首都功能疏解的幾點思考
基于PMC窗口功能實現(xiàn)設(shè)備同步刷刀功能
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡直”和“幾乎”的表達(dá)功能
中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
主站蜘蛛池模板: 成人毛片免费观看| 亚洲精品麻豆| 91精品国产福利| 精品人妻无码中字系列| 日本欧美精品| 亚洲国产精品日韩欧美一区| 亚洲一区免费看| 97亚洲色综久久精品| 综合亚洲色图| 日日拍夜夜操| 久操中文在线| 漂亮人妻被中出中文字幕久久| 九九九国产| 国产AV无码专区亚洲精品网站| 日本成人不卡视频| 草逼视频国产| 自慰网址在线观看| 国产在线观看精品| 99视频在线观看免费| 中文字幕调教一区二区视频| 亚洲精品777| 免费无码又爽又黄又刺激网站 | 国产成人精品高清在线| 麻豆精品视频在线原创| 亚洲无线一二三四区男男| 日本黄色不卡视频| 五月婷婷亚洲综合| 中文字幕人成人乱码亚洲电影| 久久中文字幕不卡一二区| 亚洲国产精品日韩欧美一区| 无码免费试看| 99精品国产自在现线观看| 国产呦精品一区二区三区网站| 999国产精品| 亚洲Av综合日韩精品久久久| 国产日韩精品一区在线不卡 | 亚洲无码高清视频在线观看| 18禁黄无遮挡网站| 日韩天堂视频| 国模在线视频一区二区三区| 欧美亚洲欧美| 在线中文字幕日韩| 成人伊人色一区二区三区| 成年人久久黄色网站| 国内嫩模私拍精品视频| 无码丝袜人妻| 欧美a在线视频| 国产一区在线视频观看| 国产电话自拍伊人| 亚洲高清在线天堂精品| 国产91成人| 欧美亚洲第一页| 人妻精品久久久无码区色视| 五月天丁香婷婷综合久久| 国产精品亚洲专区一区| 国产成人凹凸视频在线| 国产精品yjizz视频网一二区| 久久综合婷婷| 中文一级毛片| 久久99国产综合精品1| 青青青伊人色综合久久| 久久夜色精品国产嚕嚕亚洲av| 日韩精品免费一线在线观看| 午夜成人在线视频| 欧美亚洲欧美区| 国产真实乱了在线播放| 波多野结衣国产精品| 国产永久免费视频m3u8| 亚洲狠狠婷婷综合久久久久| 色国产视频| 亚洲一区二区三区香蕉| 亚洲美女久久| 欧美激情伊人| 国产黄在线免费观看| 视频在线观看一区二区| 国产凹凸视频在线观看| 亚洲精品大秀视频| 天堂va亚洲va欧美va国产| 亚洲国产精品久久久久秋霞影院| 2021国产精品自产拍在线观看| 国产欧美日韩在线一区| 亚洲一级毛片在线观播放|