許志成
(黎明職業(yè)大學(xué) 信息與電子工程學(xué)院,福建 泉州 362000)
基于面向?qū)ο笳Z(yǔ)言的多機(jī)位室內(nèi)拍攝系統(tǒng)設(shè)計(jì)
許志成
(黎明職業(yè)大學(xué) 信息與電子工程學(xué)院,福建 泉州 362000)
針對(duì)影視作品的某些室內(nèi)拍攝需要,提出一種基于面向?qū)ο笳Z(yǔ)言的多機(jī)位室內(nèi)拍攝系統(tǒng)。通過將步進(jìn)電機(jī)作為攝像頭的全方位執(zhí)行機(jī)構(gòu),運(yùn)用智能運(yùn)動(dòng)控制卡對(duì)步進(jìn)電機(jī)的運(yùn)動(dòng)進(jìn)行控制;與計(jì)算機(jī)端鏈接,用戶通過操作計(jì)算機(jī)端上的相應(yīng)軟件對(duì)智能運(yùn)動(dòng)控制卡發(fā)送指令,從而實(shí)現(xiàn)攝像系統(tǒng)機(jī)位的遠(yuǎn)程操作。該系統(tǒng)使用面向?qū)ο笳Z(yǔ)言實(shí)現(xiàn)智能運(yùn)動(dòng)控制卡與計(jì)算機(jī)端的相互關(guān)聯(lián),提高編程效率,實(shí)現(xiàn)良好的人機(jī)交互操作,給予系統(tǒng)良好的可擴(kuò)展性。
拍攝系統(tǒng);步進(jìn)電機(jī);智能運(yùn)動(dòng)控制;多機(jī)位控制;面向?qū)ο?/p>
傳統(tǒng)的取景拍攝方式難以滿足當(dāng)前影視作品對(duì)場(chǎng)景拍攝方式的新要求,因而出現(xiàn)了多機(jī)位拍攝系統(tǒng),即在不同的方位分別布置攝像頭,各攝像頭對(duì)同一場(chǎng)景或接續(xù)或同步拍攝,通過后期處理將所拍攝內(nèi)容進(jìn)行合成處理,從而實(shí)現(xiàn)場(chǎng)景的特殊拍攝要求。由于多機(jī)位攝像系統(tǒng)增加了攝像頭的數(shù)目,相對(duì)于傳統(tǒng)的單攝像頭拍攝方式,無(wú)論是在攝像頭的角度調(diào)整或是在攝像頭的參數(shù)設(shè)置上,都帶來諸多不便,且手動(dòng)調(diào)整方式效率低,增加了拍攝成本。為實(shí)現(xiàn)高效快捷的多機(jī)位拍攝,降低拍攝成本,本文提出一種針對(duì)室內(nèi)拍攝需求的基于面向?qū)ο笳Z(yǔ)言的多機(jī)位室內(nèi)拍攝系統(tǒng)[1]。系統(tǒng)采用基于面向?qū)ο笳Z(yǔ)言設(shè)計(jì)的用戶端控制程序,將軟件所應(yīng)實(shí)現(xiàn)的功能用不同的類進(jìn)行模塊化封裝,減少編程工作量,提高系統(tǒng)的可擴(kuò)展性,為之后系統(tǒng)的維護(hù)升級(jí)提供便利。
多機(jī)位室內(nèi)拍攝系統(tǒng)是一種在硬件上基于智能運(yùn)動(dòng)控制構(gòu)架,在軟件上基于面向?qū)ο笳Z(yǔ)言的系統(tǒng)。該系統(tǒng)硬件由多機(jī)位攝像頭、步進(jìn)電機(jī)、智能運(yùn)動(dòng)控制卡、USB3.0通信器及計(jì)算機(jī)終端等部分組成[2]。攝像頭安裝在旋轉(zhuǎn)控制架上,每個(gè)旋轉(zhuǎn)控制架配備兩個(gè)步進(jìn)電機(jī),分別控制攝像頭的水平角度擺動(dòng)和豎直方向轉(zhuǎn)動(dòng),實(shí)現(xiàn)攝像頭空間的全方位轉(zhuǎn)動(dòng);將4個(gè)這樣的拍攝模塊分別安裝在室內(nèi)所需的各個(gè)拍攝點(diǎn)位置便能夠滿足所有特殊角度場(chǎng)景的拍攝需求[3]。智能運(yùn)動(dòng)控制卡是該系統(tǒng)的核心,它是連接計(jì)算機(jī)終端與多機(jī)位拍攝執(zhí)行機(jī)構(gòu)的媒介,同時(shí)也是該系統(tǒng)的執(zhí)行控制中心。系統(tǒng)采用雷賽DMC5840運(yùn)動(dòng)控制卡,該運(yùn)動(dòng)控制卡支持8軸聯(lián)動(dòng)同步控制,同時(shí)又具備4個(gè)高速輔助觸點(diǎn),能夠很好地支持系統(tǒng)的指令程序控制[4]。
硬件構(gòu)架的搭建方式為:4個(gè)拍攝模塊的步進(jìn)電機(jī)分別通過高速脈沖指令端線與運(yùn)動(dòng)控制卡的8個(gè)軸輸出端口連接,用4條快門引線分別將攝像頭與運(yùn)動(dòng)控制卡的4個(gè)高速輔助觸點(diǎn)相連接;將智能運(yùn)動(dòng)控制卡的信號(hào)輸入端與通信器的信號(hào)發(fā)射端相連,通信器的接收端通過USB3.0接口與計(jì)算機(jī)終端相連接,構(gòu)成多機(jī)位拍攝的硬件系統(tǒng)[5]。
采用面向?qū)ο笳Z(yǔ)言進(jìn)行系統(tǒng)的軟件程序設(shè)計(jì)。可以很大程度地簡(jiǎn)化軟件操作,使控制軟件的操作更加人性化。在編程設(shè)計(jì)過程中,可采用類封裝的方式對(duì)軟件所欲實(shí)現(xiàn)的功能進(jìn)行模塊化編程設(shè)計(jì),劃分為不同模塊,同時(shí)利用面向?qū)ο笳Z(yǔ)言的繼承特點(diǎn)進(jìn)行類與類之間的相互關(guān)聯(lián),減少程序設(shè)計(jì)的工作量,也為后續(xù)維護(hù)等工作提供便利。按照類劃分模塊的設(shè)計(jì)方式,該軟件程序設(shè)計(jì)主要由通信模塊、空間角度控制模塊以及攝像頭參數(shù)調(diào)節(jié)模塊等3部分組成,通信模塊為主體父類,空間角度控制模塊及攝像頭參數(shù)調(diào)節(jié)模塊分別繼承于通信類,實(shí)現(xiàn)程序內(nèi)部之間的整體關(guān)聯(lián)。
2.1通信模塊的窗體FORM類程序設(shè)計(jì)
Form程序是該系統(tǒng)軟件部分的主體,主要承擔(dān)運(yùn)動(dòng)控制卡與計(jì)算機(jī)終端的通信連接,獲取攝像頭采集信息以及創(chuàng)造操作控件所需類等工作,同時(shí)作為父類關(guān)聯(lián)程序內(nèi)部的各個(gè)模塊。在硬件系統(tǒng)部分搭建連接完成后,打開VisualStudio2013,創(chuàng)建一個(gè)Windows窗體應(yīng)用程序,將程序語(yǔ)言設(shè)置為C#,雙擊Windows窗體控件,進(jìn)入Form程序的編寫頁(yè)面。
第一步,加載運(yùn)動(dòng)控制卡與攝像頭函數(shù)庫(kù)及實(shí)現(xiàn)系統(tǒng)各模塊之間的相互關(guān)聯(lián):首先,采用using方式加載DMC5840和CAMERA兩個(gè)函數(shù)庫(kù);其次,在主窗體Form中創(chuàng)建兩個(gè)Click按鈕,將兩個(gè)Click按鈕的雙擊事件分別設(shè)置為調(diào)用Form1窗體(空間角度控制類)及Form2窗體(攝像頭參數(shù)調(diào)節(jié)類);最后,使Form1,F(xiàn)orm2分別繼承于Form主窗體類,實(shí)現(xiàn)模塊關(guān)聯(lián)。Form1,F(xiàn)orm2兩個(gè)類模塊便可通過與Form類的繼承關(guān)系直接獲取相關(guān)硬件通信信息及調(diào)用操作相關(guān)硬件函數(shù)庫(kù),提高程序的工作效率,減少操作延遲。
第二步,進(jìn)行通信程序的編寫設(shè)計(jì):首先,在程序框架的命名控件內(nèi)創(chuàng)造一個(gè)Socket類型變量,將其命名為connect;其次,創(chuàng)建一個(gè)bit類型的數(shù)組變量,將數(shù)組長(zhǎng)度設(shè)置為12,命名為movsigal,同時(shí)創(chuàng)建一個(gè)for循環(huán),將循環(huán)次數(shù)設(shè)置為12,在循環(huán)體內(nèi)調(diào)用getsigal函數(shù),分別對(duì)bit數(shù)組的每一個(gè)成員進(jìn)行信號(hào)賦值;最后,再創(chuàng)建一個(gè)for循環(huán),將bit數(shù)組的信號(hào)變量值分別賦予connect下的receive屬性中的每一個(gè)數(shù)組成員,建立運(yùn)動(dòng)控制卡與計(jì)算機(jī)終端之間的通信連接。
第三步,進(jìn)行攝像頭信息采集的程序設(shè)計(jì):首先,創(chuàng)造一個(gè)DigalMedia類型的數(shù)組變量,將數(shù)組長(zhǎng)度設(shè)置為4,命名為gottenVideo;其次,創(chuàng)造一個(gè)for循環(huán),循環(huán)次數(shù)設(shè)置為4,在循環(huán)體內(nèi)將bit數(shù)組成員進(jìn)行格式轉(zhuǎn)化,轉(zhuǎn)化成image類型變量,將其轉(zhuǎn)換變量后的變量值賦予gottenVideo的各個(gè)成員;最后,在Form窗體中,設(shè)置4個(gè)Video控件,分別接收gottenVideo變量中的對(duì)應(yīng)成員值,程序便能夠分別接收4個(gè)攝像頭的實(shí)時(shí)圖像,并同步顯示在Windows窗體程序上。
第四步,創(chuàng)造其他類所需的中樞類的一項(xiàng):首先,創(chuàng)造一個(gè)Control類型的變量,將其命名為getMove;其次,將其設(shè)置為所有控件變量類型的子類,使其能夠?qū)崟r(shí)接收到控件處的相關(guān)操作信號(hào);最后,調(diào)用connect對(duì)象下的send屬性,將getMove賦值于該屬性,使運(yùn)動(dòng)控制卡接收到來源于計(jì)算機(jī)控制端的操作指令信號(hào)。完成Form程序的相關(guān)編寫設(shè)計(jì)[6]。
Form程序的相關(guān)設(shè)計(jì)算法如下所示:
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DMC5840.Text;
using CAMERA.Text;
namespace WindowsFormsApplication1
{
public partial class Form : Form1,F(xiàn)orm2
{
public Form( )
{
Socket connect = new Socket( );
bit[12] movsigal ;
For(int i=0;i>=11;i++ )
{movsigal[i]=getsigal on i;}
For(int i=0;i>=11;i++ )
{connect.receive[i]=bit[i];}
DigalMedia[4] gottenVideo;
For(int i=0;i>=3;i++ )
{gottenVideo[i]= (to image)movsigal[i] ;}
Control getMove=new Control();
getMove:All Objet;
connect.send=getMove;
}
2.2空間角度控制模塊的Form類程序設(shè)計(jì)
空間角度控制程序用來控制4個(gè)攝像頭的全方位旋轉(zhuǎn)擺動(dòng)。第一步,在Form1窗體內(nèi)分別拖入4個(gè)Button類型控件,置于Video控件下方,顯示標(biāo)志分別設(shè)置為UP,DOWN,LEFT,RIGHT;第二步,雙擊UP Button控件,對(duì)該控件進(jìn)行程序代碼設(shè)計(jì):首先,在該控件的命名空間內(nèi)創(chuàng)建一個(gè)PickReaction類型變量,將其命名為getClick;其次,調(diào)用該類型對(duì)象下的revolve屬性,將bit on 1值賦值于該屬性;最后,調(diào)用該類型對(duì)象下的send函數(shù),參數(shù)設(shè)置為getMove;實(shí)現(xiàn)將用戶的操作指令傳送到運(yùn)動(dòng)控制卡中。以上所述是針對(duì)UP Button控件的具體程序設(shè)計(jì),其余的控件程序的設(shè)計(jì)與其大致相同,只需將其余3個(gè)控件中的getClick.revolve屬性分別賦值于bit on 0;bit on 1;bit on 0即可。攝像頭控件的角度控制程序具體算法設(shè)計(jì)如下:
public partial class button1:Form
{
PickReaction getClick=new PickReaction();
getClick.revolve=bit on 1;
getClick.send(getMove);
}
2.3攝像頭參數(shù)調(diào)節(jié)程序設(shè)計(jì)
攝像頭參數(shù)調(diào)節(jié)程序主要用來實(shí)現(xiàn)對(duì)攝像頭參數(shù)如對(duì)焦、ISO等的遠(yuǎn)程控制。第一步,進(jìn)行對(duì)焦控制程序的相關(guān)設(shè)計(jì):首先,雙擊Video控件,創(chuàng)建一個(gè)Fix類型對(duì)象,命名為camera;其次,調(diào)用GetSiteposition函數(shù),將該函數(shù)的參數(shù)值設(shè)置為click,調(diào)用Ref指令將函數(shù)值映射到Image類型變量中,同時(shí)創(chuàng)建一個(gè)Image類型變量,命名為im,接收映射后的函數(shù)值;最后,將該函數(shù)值賦值camera變量的focus屬性,至此,便能夠?qū)崿F(xiàn)遠(yuǎn)程對(duì)焦控制,系統(tǒng)會(huì)對(duì)顯示圖像中鼠標(biāo)的點(diǎn)擊處進(jìn)行自動(dòng)對(duì)焦。第二步,進(jìn)行ISO控制程序的相關(guān)設(shè)計(jì):首先,在Form2窗體內(nèi)拖入一數(shù)字框控件,雙擊該數(shù)字框控件,在該控件的命名空間下創(chuàng)建Light類型變量,命名為setiso,并對(duì)該變量賦值box.Context;其次,創(chuàng)建一個(gè)Cmos類型對(duì)象,命名為getiso,將setiso的變量值賦予getiso的value屬性;最后,調(diào)用getiso的set函數(shù),將函數(shù)值設(shè)置為camera,實(shí)現(xiàn)對(duì)攝像頭ISO的遠(yuǎn)程控制[7]。攝像頭參數(shù)調(diào)節(jié)程序的具體算法如下所示:
public partial class Video:Form
{
Fix camera=new Fix( );
Image im=(Ref Image)GetSiteposition(click);
camera.focus=im;
}
public partial class box: Form
{
Light setiso=box.Context;
Cmos getiso=new Cmos( );
getiso.value=setiso;
getiso.set(camera);
}
2.4控制軟件操作說明
本系統(tǒng)的控制軟件為面向?qū)ο箢愋偷腤indows窗體類應(yīng)用程序,程序的主窗體界面有兩個(gè)操作按鈕,分別對(duì)應(yīng)空間角度調(diào)整與攝像頭參數(shù)設(shè)置兩個(gè)操作界面。所有窗口點(diǎn)擊展開后,整個(gè)操作界面分為4個(gè)區(qū)域,每個(gè)區(qū)域?qū)?yīng)一個(gè)機(jī)位攝像頭的相關(guān)操作,每個(gè)區(qū)域內(nèi)部皆由影像顯示窗口、攝像頭方位控制按鈕及ISO設(shè)置框等幾部分組成。用戶點(diǎn)擊操作4個(gè)方位控制按鈕便可實(shí)現(xiàn)對(duì)攝像頭的全方位擺動(dòng)控制,在ISO設(shè)置框內(nèi)輸入預(yù)設(shè)的ISO值實(shí)現(xiàn)對(duì)攝像頭感光度的實(shí)時(shí)控制。在對(duì)焦控制方面,用戶只需點(diǎn)擊影像中需要對(duì)焦的位置,系統(tǒng)便能夠快速地對(duì)該點(diǎn)進(jìn)行自動(dòng)對(duì)焦處理[8]。
本文提出的基于面向?qū)ο笳Z(yǔ)言的多機(jī)位室內(nèi)拍攝系統(tǒng)能夠有效地滿足當(dāng)前攝影行業(yè)室內(nèi)場(chǎng)景拍攝的需求。該系統(tǒng)所采用的面向?qū)ο缶幊淘O(shè)計(jì)方法在實(shí)現(xiàn)對(duì)多機(jī)位拍攝系統(tǒng)自動(dòng)控制操作的同時(shí)簡(jiǎn)化控制方式,易掌握,便于操作,相對(duì)于其他拍攝系統(tǒng)具有較大的適用性與普及性。
[1] 李忠曄.面向?qū)ο蟪绦蛟O(shè)計(jì)[M].北京:清華大學(xué)出版社,2011:220-231.
[2] 薛承基.電機(jī)傳動(dòng)系統(tǒng)控制[M].張永昌,譯.北京:機(jī)械工業(yè)出版社,2013:103-106.
[3] 坂本正文.步進(jìn)電機(jī)應(yīng)用技術(shù)[M].王自強(qiáng),譯.北京:科學(xué)出版社,2013:89-94.
[4] 雷賽.DMC5480[M].北京:機(jī)械工業(yè)出版社,2015:121-156.
[5] 雷丹.運(yùn)動(dòng)控制系統(tǒng)[M].北京:人民郵電出版社,2013:56-62.
[6] MARK M,ERIC L.C#本質(zhì)論[M].周靖,譯. 北京:人民郵電出版社,2014:32-45.
[7] JEFFEREY R.CLR via C#[M].周靖,譯.北京:清華大學(xué)出版社,2015:185-189.
[8] BEN S,CATHERINE P.用戶界面設(shè)計(jì)[M].張國(guó)印,譯.北京:電子工業(yè)出版社,2015:145-155.
(責(zé)任編輯:黃韡 英文審校:楊德權(quán))
DesignofMulti-positionIndoorShootingSystemBasedonObject-orientedLanguage
XU Zhicheng
(College of Information and Electronic Engineering, Liming Vocational University, Quanzhou 362000, China)
Aiming at some indoor shooting needs of film and television works, a multi-position indoor shooting system based on object-oriented language is proposed. The realization of the remote operation of the camera system is obtained by using the stepper motor as the omni-directional actuator of the camera, and the movement of the stepper motor is controlled by the intelligent motion control card and connected with the computer, which is operated by the users to send instructions to intelligent motion control. The interconnected system uses object-oriented language to achieve the correlation between intelligent motion control card and computer terminal, improves the programming efficiency, realizes good human-computer interactive operation, and shows a good system expansibility.
shooting system; stepping motor; intelligent motion control; multi-position control; object-oriented
2017-01-03
許志成(1981-),男,講師,碩士,主要從事多媒體和虛擬技術(shù)方面研究。
黎明職業(yè)大學(xué)規(guī)劃項(xiàng)目(LZ2015112)
1008-8075(2017)02-0084-05
10.13446/j.cnki.jlvu.20170032
TP 23
:A
黎明職業(yè)大學(xué)學(xué)報(bào)2017年2期