結(jié)合筆壓的毛筆字筆鋒模擬方法
【專利摘要】結(jié)合筆壓的毛筆字筆鋒模擬方法應(yīng)用于手寫系統(tǒng)。本算法發(fā)明的主要目的在于分析不同毛筆字技法結(jié)合手寫板筆壓寫毛筆字時(shí)的筆鋒變化,并做不同的算法處理,達(dá)到真正的融合藝術(shù)感的毛筆字字體效果,而不是簡(jiǎn)單的手寫效果。本算法應(yīng)著重保護(hù)對(duì)于不同毛筆字技法所對(duì)應(yīng)的筆鋒實(shí)時(shí)生成模擬算法進(jìn)行保護(hù)。
【專利說(shuō)明】結(jié)合筆壓的毛筆字筆鋒模擬方法
【技術(shù)領(lǐng)域】
[0001]該技術(shù)主要應(yīng)用于手寫系統(tǒng),例如簽名,手寫藝術(shù)字,電子書法等,應(yīng)對(duì)需要實(shí)時(shí)顯示書寫效果的領(lǐng)域,【技術(shù)領(lǐng)域】涉及到了毛筆字技法的分析,這塊屬于藝術(shù)領(lǐng)域,系統(tǒng)模擬及搭建屬于軟件領(lǐng)域,主要領(lǐng)域應(yīng)為軟件領(lǐng)域,算法的目的在于創(chuàng)造可以實(shí)時(shí)寫出字體和字體對(duì)應(yīng)筆鋒效果的毛筆字,所以應(yīng)是計(jì)算機(jī)圖形學(xué)的一個(gè)分支,屬于軟件領(lǐng)域,同時(shí)由于涉及到了藝術(shù)分析,所以也可以屬于數(shù)字藝術(shù)領(lǐng)域或者數(shù)字媒體【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]有技術(shù)多是非實(shí)時(shí)的,通過(guò)擴(kuò)散算法達(dá)到相應(yīng)的水墨效果,通常是先錄入筆跡,然后根據(jù)筆記進(jìn)行計(jì)算,最后生成圖片;另外也有實(shí)時(shí)的毛筆字算法,但是算法本身注重的是筆畫效果,而不是毛筆字本身整體的藝術(shù)感,不強(qiáng)化筆鋒,只能讓人看到覺(jué)得這是毛筆字,但是卻寫不出毛筆字相應(yīng)的技法效果,處于一種只有技術(shù),沒(méi)有將藝術(shù)融合進(jìn)去的境地,并沒(méi)有分析不同字體應(yīng)有不同的筆鋒,不同技巧也應(yīng)有不同的處理方式。
【發(fā)明內(nèi)容】
[0003]本算法發(fā)明的主要目的在于分析不同毛筆字技法結(jié)合手寫板筆壓寫毛筆字時(shí)的筆鋒變化,并做不同的算法處理,達(dá)到真正的融合藝術(shù)感的毛筆字字體效果,而不是簡(jiǎn)單的手寫效果。
[0004]實(shí)時(shí)毛筆字模擬是有的,但是利用手寫板結(jié)合筆壓去模擬不同書法技巧下筆鋒變化的毛筆字系統(tǒng)是沒(méi)有的,本算法應(yīng)著重保護(hù)對(duì)于不同毛筆字技法所對(duì)應(yīng)的筆鋒實(shí)時(shí)生成模擬算法進(jìn)行保護(hù)。
[0005]程序整體流程圖如下圖1a:
[0006]1.結(jié)合筆壓的毛筆字筆鋒模擬方法,其特征在于,包括如下步驟:
[0007]步驟101:獲取輸入數(shù)據(jù):通過(guò)獲取筆壓的設(shè)備,錄入書寫者的行筆軌跡。
[0008]每一次傳入的數(shù)據(jù)包中應(yīng)包括:(I)當(dāng)前筆壓Press,數(shù)值范圍是1_100,筆壓為O時(shí)表示沒(méi)有接觸到手寫板。
[0009]對(duì)于筆壓Press為O的數(shù)據(jù)時(shí)不進(jìn)行任何處理,繼續(xù)獲取下一個(gè)手寫板包數(shù)據(jù)。
[0010]同時(shí)所有筆壓都需要進(jìn)行重新計(jì)算,筆壓對(duì)應(yīng)函
【權(quán)利要求】
1.結(jié)合筆壓的毛筆字筆鋒模擬方法,其特征在于,包括如下步驟: 步驟101:獲取輸入數(shù)據(jù):通過(guò)獲取筆壓的設(shè)備,錄入書寫者的行筆軌跡; 每一次傳入的數(shù)據(jù)包中應(yīng)包括:(I)當(dāng)前筆壓Press,數(shù)值范圍是1-100,筆壓為O時(shí)表示沒(méi)有接觸到手寫板; 對(duì)于筆壓Press為O的數(shù)據(jù)時(shí)不進(jìn)行任何處理,繼續(xù)獲取下一個(gè)手寫板包數(shù)據(jù); 同時(shí)所有筆壓都需要進(jìn)行重新計(jì)算,筆壓對(duì)應(yīng)函數(shù)其中X為輸入筆
I 100,Α.> 80壓,y為輸出筆壓, (2)當(dāng)前鼠標(biāo)坐標(biāo)Position[i]= (x,y), i=0~4,保留最少5個(gè)最新數(shù)據(jù);5個(gè)坐標(biāo)數(shù)據(jù)產(chǎn)生4個(gè)向量,進(jìn)而計(jì)算出3個(gè)向量夾角: 手寫板實(shí)際還是操作鼠標(biāo)的移動(dòng),所以實(shí)際傳入的是當(dāng)前鼠標(biāo)在屏幕中的像素坐標(biāo),范圍寬度應(yīng)該是O-屏幕寬像素,高度為O-屏幕高像素; 當(dāng)某些手寫板像素坐標(biāo)使用的是(0-1,0-1)相對(duì)范圍,需要在數(shù)據(jù)處理模塊中進(jìn)行轉(zhuǎn)換; 步驟102:處理輸入數(shù)據(jù):硬件設(shè)備只提供了兩種數(shù)據(jù):筆壓Press和位置Position ;其他衍生數(shù)據(jù)需要在處理模塊中進(jìn)行處理;· 具體詳細(xì)數(shù)據(jù)及計(jì)算方式如下: 幀間距離Dis:獲取兩個(gè)數(shù)據(jù)包中傳入的坐標(biāo),按照兩點(diǎn)距離公式:Di_十算出距離,其中i=0~4,當(dāng)Dis的累加數(shù)據(jù)小于100,從O開始保存之前的五組數(shù)據(jù),Dis數(shù)據(jù)初始值為-1,筆壓為O時(shí)清零Dis數(shù)據(jù),全部賦初值-1 ;單位為:像素;x,y指的是像素坐標(biāo); Dis的距離累加值DisCum小于100可能是設(shè)備不穩(wěn)定造成的,數(shù)據(jù)不能用; 距離累加值DisCum=Dis數(shù)組5個(gè)值的累加,用于在落筆階段判斷移動(dòng)距離是否超過(guò)了閾值;閾值為屏幕寬度的8% ; 當(dāng)前行筆方向夾角:記錄行筆軌跡轉(zhuǎn)過(guò)的角度,通過(guò)保留的5個(gè)坐標(biāo)位置數(shù)據(jù)包,得出4個(gè)向量,進(jìn)而計(jì)算出角度,根據(jù)平面向量夾角公式:設(shè)兩向量分別為a=(ai,a2),b=(bi,b2),那么他們之間的夾角Ssjsff之后利用 arccos α即可得出夾角α ;按照順序依次存儲(chǔ)4個(gè)角度在數(shù)組中,數(shù)組初值為-1,代表沒(méi)有賦值; 行筆夾角累加值:數(shù)組中角度的累加,即五個(gè)數(shù)據(jù)包內(nèi)筆畫轉(zhuǎn)過(guò)的角度; 記錄筆壓變化,兩次數(shù)據(jù)包之間的變化值,為正值說(shuō)明筆壓在增大,為負(fù)值說(shuō)明筆壓在減??; 圖像類型數(shù)組:為數(shù)組類型,每一個(gè)數(shù)組變量存儲(chǔ)一個(gè)筆刷圖像; 步驟103:分析輸入數(shù)據(jù):根據(jù)不同的落筆數(shù)據(jù)和抬筆數(shù)據(jù)做不同的算法處理;首先是筆的選擇,不同的筆對(duì)應(yīng)了不同的落筆墨點(diǎn),在落筆的方式不同時(shí)要有不同的效果;落筆的效果通過(guò)顯示實(shí)驗(yàn)獲得; 根據(jù)筆壓的變化量進(jìn)行判斷,首先判斷筆壓Press從O到有數(shù)值,筆壓變化量PressDis為正值說(shuō)明是落筆過(guò)程,故在筆壓有數(shù)值的那個(gè)包的時(shí)間算起,1.5秒內(nèi)都強(qiáng)制進(jìn)入步驟103-1 ;筆壓變化量為負(fù),最終筆壓為O則為提筆過(guò)程,進(jìn)入步驟103-2,其他情況進(jìn)入行筆步驟103-3 ; 步驟103-1:落筆過(guò)程判斷:落筆在毛筆書法中分兩大類,藏鋒和露峰,藏鋒中分為垂直落筆和筆尖環(huán)繞法藏鋒; 處理上分兩種情況,由幀間距離數(shù)組Dis來(lái)判斷,當(dāng)Dis五個(gè)數(shù)據(jù)累加值DisCum,超過(guò)閾值,閾值為屏幕像素寬度的8% ; 當(dāng)DisCum值超過(guò)閾值時(shí),不需要更換筆刷,起筆階段按照選擇的筆型,隨機(jī)使用Pen數(shù)組中一個(gè)筆刷圖案作為筆刷,筆刷大小按照筆壓函數(shù)對(duì)應(yīng)的值變化即可; 當(dāng)DisCum沒(méi)有超過(guò)閾值時(shí),判斷為垂直落筆的藏鋒,,那么每2個(gè)數(shù)據(jù)包就更換一次筆刷樣式; 當(dāng)前筆刷樣式需要在筆刷Pen類型中按照筆的分類,在分類下進(jìn)行隨機(jī)選取,每經(jīng)過(guò)兩個(gè)數(shù)據(jù)包當(dāng)前筆刷樣式就需要更換一次,直到落筆階段結(jié)束;轉(zhuǎn)到步驟104 ; 步驟103-2:提筆部分:提筆同樣分為露峰和藏鋒,藏鋒部分與行筆相同處理,提筆藏鋒時(shí)筆刷大小按照筆壓函數(shù)對(duì)應(yīng)的值減小即可; 提筆露峰分為兩種,第一種是正常的出峰,一種是折峰,具體算法為:判斷PenRCum夾角累加值,小于90就是正常的出峰,筆刷按照筆壓對(duì)應(yīng)函數(shù)減少即可; PenRCum值大于90就是折峰,對(duì)于折峰,從PenRCum超過(guò)90度的數(shù)據(jù)包開始計(jì)算,向前倒推,找到PenRCum值不足90度的點(diǎn)作為起始點(diǎn),PenRCum超過(guò)90度后當(dāng)前點(diǎn)為第5號(hào)點(diǎn),向前倒推不足90度的點(diǎn)為第2點(diǎn),故從第2點(diǎn)開始,與后續(xù)所有數(shù)據(jù)包每?jī)蓚€(gè)數(shù)據(jù)包皆與起始點(diǎn)即2號(hào)點(diǎn)形成連線 三角形,后續(xù)數(shù)據(jù)包為3,4,5號(hào)點(diǎn),那么形成的三星形為2,3,4和2,4,5兩個(gè)三角形,同時(shí)填充.形成厚重的折峰;轉(zhuǎn)到步驟104 ; 步驟103-3:,行筆期間按照筆壓大小,調(diào)整筆刷大小進(jìn)行排列即可;轉(zhuǎn)到步驟104 ; 步驟104:輸出:將整個(gè)圖像存儲(chǔ)成圖像顯示到屏幕上即可。
【文檔編號(hào)】G06F3/0488GK103823628SQ201310686612
【公開日】2014年5月28日 申請(qǐng)日期:2013年12月15日 優(yōu)先權(quán)日:2013年12月15日
【發(fā)明者】林華, 李蔚然, 劉浩君 申請(qǐng)人:北京工業(yè)大學(xué)