• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于MFC的手繪圖形實時去噪研究與應用

      2017-03-31 18:56隋雪潔高林楊偉萬國超劉貴彬
      軟件導刊 2016年8期
      關鍵詞:插值

      隋雪潔+高林+楊偉+萬國超+劉貴彬

      摘 要:分析了離散點數(shù)據(jù)的一般處理方法,針對慢速手繪圖形產(chǎn)生的邊緣噪點問題,提出一種適用于實時生成圖形的預處理算法,對采集的數(shù)據(jù)點進行實時篩選插值,以保證數(shù)據(jù)準確可靠。在MFC中進行實現(xiàn),并將其應用于軟件開發(fā),測試表明該算法繪圖效果改善極大,慢速手繪圖形平滑且不失真。

      關鍵詞關鍵詞:離散點;MFC;GDI;插值;邊緣噪點

      DOIDOI:10.11907/rjdk.161468

      中圖分類號:TP317.4

      文獻標識碼:A 文章編號:1672-7800(2016)008-0183-03

      0 引言

      無論是科學研究還是實際生產(chǎn)中,人們通過采集、測量或者實驗會獲得很多數(shù)據(jù),通常情況下,這些數(shù)據(jù)都是離散的,很難直接從一大堆離散數(shù)據(jù)中找到它們的內在聯(lián)系。隨著計算機圖形學的發(fā)展,離散數(shù)據(jù)的重建與可視化得到越來越廣泛的研究與應用,主要是對數(shù)據(jù)進行插值、擬合形成曲線或曲面,用圖形圖像的方式表現(xiàn)出來。本文結合實際需求,針對手繪圖形實時輸出產(chǎn)生的噪點問題,提出一種新的研究方法,對干擾點進行處理,并在MFC中實現(xiàn)。實驗證明,該方法能夠很好地應用于手繪圖形生成中。

      1 問題闡述

      激光筆打在手繪板上進行繪圖,采樣畫筆的采樣頻率固定不變,快速書寫時點與點之間的間隔大,采集的樣點相對精確,所繪出的圖像圓滑,可以被視覺所接受。但在實際操作中,手繪迅速程度無法保證,當筆觸放慢時,點與點的間隔很小,相同時間段內,采集點的數(shù)量增多,若不對采集點進行處理,則導致繪出的圖像產(chǎn)生邊緣噪點。

      2 離散點處理技術

      離散點是一些孤立的點集,每個元素之間都有一定的間距,在二維或者三維空間上無規(guī)律分布,復雜程度不一[1]。

      目前,國內外學者主要用3種技術對離散點進行處理,選擇何種方法取決于數(shù)據(jù)的準確性,用逼近的方法處理帶有一定誤差的數(shù)據(jù);用插值的方法處理非常準確的數(shù)據(jù);若部分數(shù)據(jù)有誤差,部分數(shù)據(jù)準確,則選用擬合的方法。

      上述過程將數(shù)據(jù)分為兩部分,在閾值范圍以內的不做處理,若將不合閾值的點全部刪除,曲線會更加平滑,但直接刪除的后果是數(shù)據(jù)的誤差導致圖像失真,因此,該部分暫留點進行分析后再加以精確,保證數(shù)據(jù)的可靠性。

      考慮到筆畫的趨勢問題,將點按照方位進行處理,以本次保留點為原點,下一保留點為終點,兩點連線作為參考向量,計算其余點向量與之夾角,夾角越小,與用戶繪制圖形相關性越大,反之,夾角太大,則極有可能為干擾點。

      定義相鄰保留點的中點坐標為(x,y),干擾點坐標為(xj,yj),w1=0.5,與參照線直線夾角余弦值為w2,若w2>w1將本部分點再次刪減,以距離加權的方式計算其余采集點的估計值remain,插入相應保留點位置。

      當前對已有離散點做好預處理,運用GDI的DrawCurve算法,通過一定的張力,將最終保留點連接為基數(shù)樣條曲線,保證繪制的曲線平滑地經(jīng)過每一個點,陡度上沒有突然的變化和尖角,確保繪制的滑順性。

      4 實現(xiàn)

      4.1 平臺

      采用VS/MFC開發(fā)環(huán)境,MFC是VC++ 的核心,徹底封裝Windows應用程序開發(fā)包的功能和結構,提供一個應用程序框架,并繼承C++繪圖方面的優(yōu)點,結合圖形設備接口GDI,處理所有Windows程序的圖形輸出。MFC提供了兩種重要的類以支持GDI繪圖,一是用于設置繪圖屬性和繪制圖形的設備環(huán)境DC類,二是各種GDI繪圖對象的繪圖對象類[2]。

      4.2 雙緩沖機制

      Windows需要重畫窗口時,會向窗口發(fā)出一個消息函數(shù),應用程序將在消息響應函數(shù)中重繪,導致屏幕不停閃爍,繪圖效率低,CPU占用率高,還有可能導致程序崩潰[3]。因此對于本次復雜繪圖,采用后緩沖區(qū)的方式,將窗口內容拷貝到dc中,要顯示的函數(shù)先繪制在內存虛擬dc上。為方便調用,dc作為一個全局的變量存在,當所有操作完成后,再將內容復制到屏幕,實質上只是在OnPaint里貼圖,解決屏幕閃爍問題。

      主要實現(xiàn)代碼如下:

      CPaintDC dc(this);CRect rect;GetClientRect(&rect); //獲取對話框長寬CDC dcBmp; //定義并創(chuàng)建一個內存設備環(huán)境 CBitmap MemBitmap; //定義一個位圖對象dcBmp.CreateCompatibleDC(&dc);//創(chuàng)建兼容性DC MemBitmap.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height());//建立一個與屏幕顯示兼容的位圖,將位圖選入臨時內存設備環(huán)境

      4.3 數(shù)據(jù)

      采集的離散點數(shù)據(jù)保存在bin文件中,每個點分別由X坐標、Y坐標、筆畫計數(shù)組成,其中筆畫用來判斷兩點是否相連,采集數(shù)據(jù)部分點的存儲信息如圖1所示。

      定義點的結構體:

      typedef struct Po_s{ unsigned int x; 橫坐標值 unsigned int y; 縱坐標值 unsigned int down; 筆尖抬起與否的標志}Po

      4.4 其它參數(shù)說明

      其它參數(shù)說明如表1所示。

      4.5 繪圖過程

      繪制過程分為畫筆連續(xù)和畫筆抬起兩種情況,分別做不同處理。畫筆抬起時,調用DrawCurve算法繪圖,連接靜態(tài)數(shù)組point中已存點,將掃描點存入靜態(tài)數(shù)組point[0],同時將計數(shù)器n重置為1,間隔k置為1,最后清空靜態(tài)數(shù)組point。畫筆連續(xù)時,過程相對復雜,處理如下:

      (1)掃描點間距小于閾值。①將該點刪除,暫時加入動態(tài)數(shù)組pt,間隔k加1;②若該掃描點為最后一點,調用DrawCurve算法繪圖,連接靜態(tài)數(shù)組point中已存點,將計數(shù)器n重置為0;否則,退出。

      (2)掃描點間距大于等于閾值。①若刪除點數(shù)量num超過或等于12個(經(jīng)反復試驗的最優(yōu)臨界值):將動態(tài)數(shù)組pt中的點取出,按算法求取估計點,加入靜態(tài)數(shù)組point; 將計數(shù)器n加1,num置為0,間隔k置為1。若計數(shù)器n等于5,繪圖,并將均值點存入point[0],將計數(shù)器n置為1,否則退出;若刪除點數(shù)量num小于7個,直接退出;②將掃描點存入靜態(tài)數(shù)組point,計數(shù)器n加1,間隔k置為1,動態(tài)數(shù)組pt清空;③若計數(shù)器n等于5,繪圖,將掃描點存入point[0],計數(shù)器置為1,間隔k置為1,動態(tài)數(shù)組pt清空;否則(計數(shù)器n<5),若該掃描點為最后一點,調用DrawCurve算法繪圖,連接靜態(tài)數(shù)組point中已存點,將計數(shù)器n重置為0;④否則,進行下一次點的循環(huán)掃描。

      5 測試

      將實現(xiàn)的算法應用于慢速繪圖,用幾種不同筆觸走向的圖形進行測試,與未處理圖像比較,邊緣噪點去除效果顯著且不失真。曲線、直線、漢字的測試結果對比分別如圖2~圖4所示,可見優(yōu)化后的圖像比優(yōu)化前更加平滑。

      6 結語

      本文將一般離散點處理方式與實際問題相結合,針對實時生成的圖形,研究一種新型離散點的預處理方法,拓寬了直接曲線擬合方式的適用空間。在MFC中加以實現(xiàn),并運用到軟件開發(fā)中,對不同類型的筆畫進行反復測試,達到了理想效果,筆畫連接更加正確、順暢。

      參考文獻:

      [1]蔡德福,石東源,李高望,等.基于輸入隨機變量離散數(shù)據(jù)的概率潮流計算方法[J].電網(wǎng)技術,2013(9):2475-2479.

      [2]黃琛.基于MFC的繪圖軟件設計與實現(xiàn)[J].電腦知識與技術,2013(10):2345-2348.

      [3]江建國,溫少營,張瑞楠.基于雙緩沖技術的GDI+無閃爍繪圖[J].計算機應用,2012(12):137-139.

      [4]蘇江寬,基于B樣條的圖像插值算法研究[D].廣州:廣東工業(yè)大學,2014(6):12-16.

      [5]顧天奇,張雷,冀世軍,等.封閉離散點的曲線擬合方法[J].吉林大學學報,2015(3):438-441.

      [6]謝裕敏,舒輝,陳建敏,等.MFC消息響應函數(shù)的逆向定位[J].計算機應用,2009(5):1394-1396.

      [7]蔡山,張浩,陳洪輝,等.基于最小二乘法的分段三次曲線擬合方法研究[J].科學技術與工程,2007(2):353-355.

      [8]MU GUOWANG,DAI SHIJIE.Reconstruction of B-spline surface by interpolating boundary curves and approximating inner points[J].Computer Aided Drafting,Design and Manufacturing,2012(3):32-34.

      (責任編輯:孫 娟)

      猜你喜歡
      插值
      基于Padé-type逼近的復合重心有理插值
      構造給定極點的有理插值新方法
      基于Sinc插值與相關譜的縱橫波速度比掃描方法
      混合重疊網(wǎng)格插值方法的改進及應用
      一種改進FFT多譜線插值諧波分析方法
      基于四項最低旁瓣Nuttall窗的插值FFT諧波分析
      雙正交周期插值小波函數(shù)的實值對稱性
      基于加窗插值FFT的PMU校驗方法
      關于埃爾米特插值的教學探討
      二元復合重心有理插值
      牡丹江市| 全南县| 磐石市| 南部县| 和龙市| 克山县| 绍兴县| 乌鲁木齐县| 清徐县| 雅江县| 兰西县| 蓝田县| 海盐县| 临夏市| 分宜县| 新沂市| 平塘县| 讷河市| 斗六市| 南宫市| 即墨市| 贵定县| 青海省| 怀仁县| 牡丹江市| 称多县| 抚顺市| 萝北县| 青神县| 申扎县| 同心县| 松阳县| 招远市| 本溪| 新竹县| 吉木乃县| 当涂县| 辽中县| 左云县| 贵定县| 轮台县|