一種繪制軌跡的還原方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本申請(qǐng)涉及視頻以及圖像的繪圖特效技術(shù)領(lǐng)域,特別是涉及一種繪制軌跡的還原方法和一種繪制軌跡的還原裝置。
【背景技術(shù)】
[0002]在圖像或視頻后期處理軟件中,通常都具有自由繪制功能。所謂自由繪制,是指用戶可以在使用處理軟件中,可以按照自己的意愿通過(guò)拖曳或者移動(dòng)的方式進(jìn)行點(diǎn)的繪制,將這些點(diǎn)連接起來(lái)就形成了用戶的繪制軌跡。
[0003]然而,當(dāng)用戶拖拽鼠標(biāo)或者移動(dòng)手寫筆進(jìn)行自由繪制時(shí),由于硬件設(shè)備和軟件的效率限制,在拖拽時(shí),每隔一段時(shí)間才響應(yīng)一個(gè)點(diǎn),這些點(diǎn)是不均勻分布的,這屬于不可控的情況。如果將這些點(diǎn)直接連起來(lái),就會(huì)將用戶的繪制軌跡都改成了直線,與用戶繪制的實(shí)際軌跡有所不符合。
[0004]因此,本領(lǐng)域技術(shù)人員迫切需要解決的問(wèn)題之一在于,提出一種繪制軌跡的還原方法,如何對(duì)筆觸形狀進(jìn)行修補(bǔ)來(lái)模擬用戶的移動(dòng)軌跡,如何計(jì)算貝塞爾曲線的長(zhǎng)度來(lái)實(shí)現(xiàn)均勻的畫出繪制軌跡。
【發(fā)明內(nèi)容】
[0005]鑒于上述問(wèn)題,提出了本申請(qǐng)實(shí)施例以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的一種繪制軌跡的還原方法和相應(yīng)的一種繪制軌跡的還原裝置。
[0006]為了解決上述問(wèn)題,本申請(qǐng)實(shí)施例公開(kāi)了一種繪制軌跡的還原方法,包括:
[0007]接收用戶輸入的繪制點(diǎn);
[0008]采用貝塞爾曲線對(duì)所述繪制點(diǎn)進(jìn)行模擬,生成貝塞爾曲線模擬軌跡;
[0009]獲取所述貝塞爾曲線模擬軌跡的控制點(diǎn)序列;
[0010]采用所述控制點(diǎn)序列對(duì)所述貝塞爾曲線模擬軌跡進(jìn)行曲線擬合,生成擬合所述貝塞爾曲線模擬軌跡的擬合線段;
[0011]按預(yù)設(shè)長(zhǎng)度間隔逐步繪制所述擬合線段。
[0012]優(yōu)選的,所述采用所述控制點(diǎn)對(duì)所述模擬軌跡進(jìn)行曲線擬合,生成擬合所述模擬軌跡的擬合線段的步驟包括:
[0013]將控制點(diǎn)序列中的第一個(gè)控制點(diǎn)與最后一個(gè)控制點(diǎn)作為節(jié)點(diǎn),將除第一個(gè)控制點(diǎn)和最后一個(gè)控制點(diǎn)之外的控制點(diǎn)作為由所述第一個(gè)控制點(diǎn)與最后一個(gè)控制點(diǎn)所確定的節(jié)點(diǎn)對(duì)應(yīng)的中間點(diǎn);
[0014]比較各個(gè)中間點(diǎn)到節(jié)點(diǎn)線段的距離中最大的距離值與預(yù)設(shè)的閾值的大小,所述節(jié)點(diǎn)線段為由兩個(gè)節(jié)點(diǎn)連接成的線段;
[0015]若最大的距離值小于預(yù)設(shè)的閾值,則將所述節(jié)點(diǎn)線段作為擬合線段;
[0016]若最大的距離值大于預(yù)設(shè)的閾值,則采用所述控制點(diǎn)序列和預(yù)設(shè)的分割系數(shù)進(jìn)行德卡斯特里奧運(yùn)算,得到N-1組分割點(diǎn)序列,N的數(shù)值為所述控制點(diǎn)序列的控制點(diǎn)個(gè)數(shù)減1;
[0017]采用所述控制點(diǎn)序列和分割點(diǎn)序列確定新的節(jié)點(diǎn)和中間點(diǎn);
[0018]返回所述比較各個(gè)中間點(diǎn)到節(jié)點(diǎn)線段的距離中最大的距離值與預(yù)設(shè)的閾值的大小的步驟。
[0019]優(yōu)選的,所述采用所述控制點(diǎn)序列和分割點(diǎn)序列確定新的節(jié)點(diǎn)和中間點(diǎn)的步驟包括:
[0020]將第一個(gè)控制點(diǎn)和最后一組分割點(diǎn)序列中唯一的一個(gè)分割點(diǎn)作為節(jié)點(diǎn),將除最后一組分割點(diǎn)序列外的分割點(diǎn)序列中的第一個(gè)分割點(diǎn)作為與所述第一個(gè)控制點(diǎn)和最后一組分割點(diǎn)序列中唯一的一個(gè)分割點(diǎn)所確定的節(jié)點(diǎn)對(duì)應(yīng)的中間點(diǎn);
[0021]將最后一個(gè)控制點(diǎn)和最后一組分割點(diǎn)序列中唯一的一個(gè)分割點(diǎn)作為節(jié)點(diǎn),將除最后一組分割點(diǎn)序列外的分割點(diǎn)序列中的最后一個(gè)分割點(diǎn)作為與所述最后一個(gè)控制點(diǎn)和最后一組分割點(diǎn)序列中唯一的一個(gè)分割點(diǎn)確定的節(jié)點(diǎn)對(duì)應(yīng)的中間點(diǎn)。
[0022]優(yōu)選的,所述控制點(diǎn)序列中控制點(diǎn)的數(shù)目為貝塞爾曲線的階數(shù)加1 ;所述控制點(diǎn)序列中的第一個(gè)控制點(diǎn)為用于模擬貝塞爾曲線模擬軌跡的第一個(gè)繪制點(diǎn),所述控制點(diǎn)序列中的最后一個(gè)控制點(diǎn)為用于模擬貝塞爾曲線模擬軌跡的最后一個(gè)繪制點(diǎn)。
[0023]優(yōu)選的,所述德卡斯特里奧運(yùn)算包括N次遞推運(yùn)算,每進(jìn)行一次遞推運(yùn)算,就得到一組分割點(diǎn)序列,分割點(diǎn)序列含有的分割點(diǎn)的數(shù)目為所述控制點(diǎn)序列的控制點(diǎn)個(gè)數(shù)減去當(dāng)前進(jìn)行的遞推運(yùn)算的次序數(shù)。
[0024]同時(shí),本申請(qǐng)還公開(kāi)了一種繪制軌跡的還原裝置,包括:
[0025]繪制點(diǎn)接收模塊,用于接收用戶輸入的繪制點(diǎn);
[0026]模擬軌跡生成模塊,用于采用貝塞爾曲線對(duì)所述繪制點(diǎn)進(jìn)行模擬,生成貝塞爾曲線模擬軌跡;
[0027]控制點(diǎn)序列獲取模塊,獲取所述貝塞爾曲線模擬軌跡的控制點(diǎn)序列;
[0028]擬合線段生成模塊,用于采用所述控制點(diǎn)序列對(duì)所述貝塞爾曲線模擬軌跡進(jìn)行曲線擬合,生成擬合所述貝塞爾曲線模擬軌跡的擬合線段;
[0029]擬合線段繪制模塊,用于按預(yù)設(shè)長(zhǎng)度間隔逐步繪制所述擬合線段。
[0030]優(yōu)選的,所述擬合線段生成模塊進(jìn)一步包括:
[0031]第一計(jì)算點(diǎn)確定子模塊,用于將控制點(diǎn)序列中的第一個(gè)控制點(diǎn)與最后一個(gè)控制點(diǎn)作為節(jié)點(diǎn),將除第一個(gè)控制點(diǎn)和最后一個(gè)控制點(diǎn)之外的控制點(diǎn)作為由所述第一個(gè)控制點(diǎn)與最后一個(gè)控制點(diǎn)所確定的節(jié)點(diǎn)對(duì)應(yīng)的中間點(diǎn);
[0032]比較子模塊,用于比較各個(gè)中間點(diǎn)到節(jié)點(diǎn)線段的距離中最大的距離值與預(yù)設(shè)的閾值的大小,所述節(jié)點(diǎn)線段為由兩個(gè)節(jié)點(diǎn)連接成的線段;
[0033]擬合線段確定子模塊,用于若最大的距離值小于預(yù)設(shè)的閾值,則將所述節(jié)點(diǎn)線段作為擬合線段;
[0034]分割點(diǎn)生成子模塊,用于若最大的距離值大于預(yù)設(shè)的閾值,則采用所述控制點(diǎn)序列和預(yù)設(shè)的分割系數(shù)進(jìn)行德卡斯特里奧運(yùn)算,得到N-1組分割點(diǎn)序列,N的數(shù)值為所述控制點(diǎn)序列的控制點(diǎn)個(gè)數(shù)減1 ;
[0035]第二計(jì)算點(diǎn)確定子模塊,用于采用所述控制點(diǎn)序列和分割點(diǎn)序列確定新的節(jié)點(diǎn)和中間點(diǎn);
[0036]返回模塊,用于返回所述比較各個(gè)中間點(diǎn)到節(jié)點(diǎn)線段的距離中最大的距離值與預(yù)設(shè)的閾值的大小的步驟。
[0037]優(yōu)選的,所述第二計(jì)算點(diǎn)確定子模塊進(jìn)一步包括:
[0038]第三計(jì)算點(diǎn)確定子模塊,用于將第一個(gè)控制點(diǎn)和最后一組分割點(diǎn)序列中唯一的一個(gè)分割點(diǎn)作為節(jié)點(diǎn),將除最后一組分割點(diǎn)序列外的分割點(diǎn)序列中的第一個(gè)分割點(diǎn)作為與所述第一個(gè)控制點(diǎn)和最后一組分割點(diǎn)序列中唯一的一個(gè)分割點(diǎn)所確定的節(jié)點(diǎn)對(duì)應(yīng)的中間占.
[0039]第四計(jì)算點(diǎn)確定子模塊,用于將最后一個(gè)控制點(diǎn)和最后一組分割點(diǎn)序列中唯一的一個(gè)分割點(diǎn)作為節(jié)點(diǎn),將除最后一組分割點(diǎn)序列外的分割點(diǎn)序列中的最后一個(gè)分割點(diǎn)作為與所述最后一個(gè)控制點(diǎn)和最后一組分割點(diǎn)序列中唯一的一個(gè)分割點(diǎn)確定的節(jié)點(diǎn)對(duì)應(yīng)的中間點(diǎn)。
[0040]優(yōu)選的,所述控制點(diǎn)序列中控制點(diǎn)的數(shù)目為貝塞爾曲線的階數(shù)加1 ;所述控制點(diǎn)序列中的第一個(gè)控制點(diǎn)為用于模擬貝塞爾曲線模擬軌跡的第一個(gè)繪制點(diǎn),所述控制點(diǎn)序列中的最后一個(gè)控制點(diǎn)為用于模擬貝塞爾曲線模擬軌跡的最后一個(gè)繪制點(diǎn)。
[0041]優(yōu)選的,所述德卡斯特里奧運(yùn)算包括N次遞推運(yùn)算,每進(jìn)行一次遞推運(yùn)算,就得到一組分割點(diǎn)序列,分割點(diǎn)序列含有的分割點(diǎn)的數(shù)目為所述控制點(diǎn)序列的控制點(diǎn)個(gè)數(shù)減去當(dāng)前進(jìn)行的遞推運(yùn)算的次序數(shù)。
[0042]本申請(qǐng)實(shí)施例包括以下優(yōu)點(diǎn):
[0043]本申請(qǐng)實(shí)施例通過(guò)對(duì)用戶輸入的繪制點(diǎn)進(jìn)行貝塞爾曲線軌跡模擬,然后再對(duì)模擬的貝塞爾曲線模擬軌跡進(jìn)行曲線擬合,得到擬合線段;通過(guò)計(jì)算擬合線段的長(zhǎng)度實(shí)現(xiàn)貝塞爾曲線模擬軌跡的計(jì)算;通過(guò)逐步繪制擬合線段,從而實(shí)現(xiàn)對(duì)用戶輸入軌跡的還原。
【附圖說(shuō)明】
[0044]圖1是本申請(qǐng)的一種繪制軌跡的還原方法實(shí)施例的步驟流程圖;
[0045]圖2是本申請(qǐng)的一種基于德卡斯特里奧算法的向量示意圖;
[0046]圖3是本申請(qǐng)的一種基于德卡斯特里奧算法的向量示意圖如圖
[0047]圖4是本申請(qǐng)的德卡斯特里奧運(yùn)算遞推的示意圖
[0048]圖5是本申請(qǐng)的一種基于德卡斯特里奧算法的計(jì)算貝塞爾曲線的示意圖;
[0049]圖6是本申請(qǐng)實(shí)施例中按預(yù)設(shè)長(zhǎng)度間隔逐步繪制擬合線段的示意圖;
[0050]圖7是本申請(qǐng)的一種繪制軌跡的還原裝置實(shí)施例的結(jié)構(gòu)框圖。
【具體實(shí)施方式】
[0051]為使本申請(qǐng)的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖和【具體實(shí)施方式】對(duì)本申請(qǐng)作進(jìn)一步詳細(xì)的說(shuō)明。
[0052]本申請(qǐng)實(shí)施例的核心構(gòu)思之一在于,通過(guò)對(duì)用戶輸入的繪制點(diǎn)進(jìn)行貝塞爾曲線軌跡模擬,然后再對(duì)模擬的貝塞爾曲線模擬軌跡進(jìn)行曲線擬合,得到擬合線段;