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

基于MATLAB與C/C++混合編程的數字圖像處理實驗教學研究

2017-07-18 11:52:49魏毅林麗惠
武夷學院學報 2017年6期
關鍵詞:實驗教學實驗

魏毅,林麗惠

(武夷學院數學與計算機學院,福建武夷山354300)

基于MATLAB與C/C++混合編程的數字圖像處理實驗教學研究

魏毅,林麗惠

(武夷學院數學與計算機學院,福建武夷山354300)

針對數字圖像處理實驗教學難度大的問題,提出一種基于MATLAB與C/C++語言混合編程的數字圖像處理實驗教學方法。該方法用MATLAB編寫圖形用戶界面、主流圖像格式的讀寫函數、統計圖表的生成函數,用C/C++語言編寫數字圖像處理的核心算法,并用MATLAB的編譯器將C/C++程序轉換為MATLAB環境中的可執行程序。這種以MATLAB為主框架、C/C++為子框架的架構能充分發揮MATLAB和C/C++語言在數字圖像處理實驗中的優勢,增強數字圖像處理實驗的可實踐性,降低非核心實驗內容的實踐難度,有效提高學生在數字圖像處理方面的技能。

數字圖像處理;MATLAB與C/C++混合編程技術;實驗教學

數字圖像處理是計算機工程、電子工程、自動化等學科的一門重要專業課程。數字圖像處理涉及大量的復雜數學推導,對于應用型本科院校的學生而言,很難通過對數學推導的學習來直觀地理解數字圖像處理算法的核心思想。因此,學生動手編寫數字圖像處理算法的代碼對于提升他們對算法的理解就尤為必要。

目前有兩種數字圖像處理實驗教學模式。1)基于MATLAB數字圖像處理工具箱的模式。MATLAB是美國MathWorks公司出品的商業數學軟件,主要用于數值計算、數據分析與可視化、算法原型開發等。它具有簡潔的腳本語言、良好的圖形化界面、強大的統計圖表制作與顯示功能,初學者易于上手學習。MTALAB數字圖像處理工具箱實現了常見的數字圖像處理算法,已在很多教學實驗中得到應用[1-4]。該模式優點在于學生能使用工具箱的API(application programming interface)快速看到圖像處理算法的實現效果,但缺點在于MATLAB采用解釋型的腳本語言,其程序的執行速度相較于編譯型語言,如C語言,要較慢很多,此外,它的可移植性也不佳,因此不適合在實際的工程項目中應用。2)基于C/C++語言的模式。該模式使用C/C++語言編寫圖像處理算法[5-6],或使用第三方庫,如OpenCV[7]。該模式的優點在于能通過編寫數字圖像處理算法的底層代碼來了解算法的思想,并且基于C/C++語言編寫的代碼具有很高的執行效率和較好的跨平臺性,適用于實際工程項目的開發。該模式的缺點在于需要編寫大量的代碼來處理多種主流圖片格式的輸入/輸出,掌握MFC(microsoft foundation class)或者QT等用戶界面的開發工具來生成用戶友好的界面以及各類統計圖表的展示。這些非數字圖像處理核心的代碼編寫任務是繁重的,對于非計算機專業的學生而言更是如此。

基于MATLAB與C/C++混合編程的數字圖像處理實驗教學是解決上述問題的一種有效方法。該方法用MATLAB編寫圖像用戶界面、主流圖像格式的讀寫、統計分析圖表的生成,用C/C++言語編寫圖像處理的核心算法,充分發揮MATLAB和C/C++語言在數字圖像處理實驗中的優勢。這種以MATLAB為主框架、C/C++為子框架的程序架構提升了實驗的可動手性,降低了實驗中非核心內容的實踐難度。事實上,基于MATLAB與C/C++混合編程的模式是解決工程與研究問題的一種有效方法,已在機械動態仿真[8]、電力系統負荷計算[9]、圖像處理[10]等方面得到廣泛應用。學生通過實踐基于MATLAB與C/C++混合編程的數字圖像處理實驗,將使其掌握這種在工程項目開發中的先進技術。

1 MATLAB與C/C++混合編程方法

MATLAB與C/C++混合編程分為兩類:MATLAB調用C/C++和C/C++調用MATLAB。主要關注MATLAB調用C/C++的方法,C/C++調用MATLAB的方法本文不涉及,相關內容可參閱文獻[11]。在MATLAB環境下調用C/C++程序需要借助MATLAB編譯器將C/C++程序編譯為MEX(MATLAB Executable)文件,然后在MATLAB命令提示符下鍵入MEX文件的文件名就完成了對C/C++程序的間接調用。圖1以example.c的C/C++程序為例,說明整個流程。

圖1 MATLAB環境下調用C/C++程序的流程Figure 1 The flow of calling a C/C++program in MATLAB

C/C++程序需要包括兩個指定的部分:頭文件信息,#include“mex.h”;入口函數:mexFunction。mex-Function函數的作用與C/C++中main函數的功能類似,它是MATLAB與C/C++語言之間的接口。例如,在文件example.c中寫入圖2中的C/C++代碼,然后在MATLAB中執行命令mex example.c,則在與文件example.c相同的目錄下就生成了example.mexw64文件,這是編譯成功的MEX文件。

圖2 example.c文件Figure 2 The file of example.c

mexFunction函數中的參數含義有如下4點。1)int nlhs:輸出參數的個數;2)mxArray*plhs[]:輸出參數的mxArray數組;3)int nrhs:輸入參數的個數;4)mxArray*prhs[]:輸入參數的mxArray數組。假設在MATLAB環境中調用example函數:[Out1,Out2]=example(In1,In2,In3)。則example函數輸入參數的對應關系是:prhs[0]←In1,prhs[1]←In2,prhs[2]←In3;example函數輸出參數的對應關系是:plhs[0]→Out1,plhs[1]→Out2;nlhs是2,nrhs是3。用C/C++編寫代碼的關鍵之處在于mexFunction函數中MATLAB與C/C++之間的數據交換。MATLAB規定所有數據類型均可用mxArray描述,并且mexFunction函數的所有輸入輸出參數均采用mxArray來定義。MATLAB提供多個以mex為前綴的API將mxArray類型的數據轉化為C/C++可直接使用的基本數據類型,如int、char、double等[11]。MATLAB調用C/C++的規范簡單易懂,學生動手實驗幾個實例之后就可掌握。

2 數字圖像處理實驗的內容設置

目前開設數字圖像處理課程的理工科專業越來越多,涵蓋了計算機工程、電子工程、自動化、數字媒體等。根據人才培養方案的目標,不同專業安排的實驗教學課時通常在10~24課時之間。為兼顧基本知識面與擴展知識點,將實驗內容分成8個實驗單元,每個實驗單元的課時為2~4個。8個實驗單元中的6個單元構成實驗的基本模塊,2個單元構成實驗的進階模塊,教師可根據學生專業需求安排具體的實驗單元(圖3)。

圖3 數字圖像處理實驗的內容Figure 3 The content of digital image processing experiments

8個單元涵蓋的實驗內容如下:

1)圖像點運算模塊,線性變換、閾值變換、窗口變換和灰度拉伸等;

2)圖像幾何變換模塊,圖像平移、圖像縮放、圖像鏡像變換和圖像旋轉等;

3)圖像頻域變換模塊,傅里葉變換、離散余弦變換、沃爾什變換、哈達瑪變換和小波變換等;

4)圖像編碼模塊,哈夫曼編碼、香農編碼、行程編碼、算術編碼和JPEG編碼等;

5)圖像恢復模塊,逆濾波、Wiener濾波、約束最小二乘濾波和盲解卷積等;

6)圖像增強模塊,空間濾波、圖像平滑、圖像銳化、頻域濾波和偽彩色增強等;

7)圖像分割模塊,基于閾值的分割、基于邊緣的分割和基于區域的分割等;

8)圖像特征提取模塊,圖像幾何特征描述、圖像形狀特征描述和圖像區域特征描述等。

考慮到不同專業的實踐要求,實驗可按圖4所示的雙軌制方法進行。例如,對于計算機工程專業的學生,采用MATLAB與C/C++混合編程的方法進行實驗,并將實驗結果與直接調用MATLAB數字圖像處理工具箱中API的運行結果進行對比,以加深對算法原理的理解。對于數字媒體專業的學生,只需調用MATLAB數字圖像處理工具箱中的API進行實驗,以使他們對算法原理和處理結果有直觀理解,而不過多強調編程技巧。

圖4 數字圖像處理實驗的雙軌制方法Figure 4 The double-track method for digital image processing experiment

3 實驗案例

以數字圖像處理中的線性變換算法為例,按照MATLAB規范,用C/C++編寫數字圖像的線性變換程序(圖5),然后將該程序與MATLAB數字圖像處理工具箱的API函數imadjust進行對比,觀察它們對同一組輸入參數的輸出結果。實驗步驟如下:

1)創建名為testMEX.c的文件,然后在其中寫入下述步驟2、3的代碼;

2)用C/C++編寫數字圖像處理函數imadjustbyC,其函數形式參考API函數imadjust(I,[low_in;hign_in],[low_out;high_out]),寫為void imadjustbyC(double*img,int len,double low_in,double hig_in,double low_out,double hig_out)。參數double*img指向存放圖像數據的首地址,int len是圖像數據包含的像素個數,double low_in、double hig_in、double low_out、double hig_out與imadjust中的含義一致;

3)按照MATLAB規范,編寫固定頭格式的函數void mexFunction(int nlhs,mxArray*plhs[],int nrhs,constmxArray*prhs[])。該函數把輸入的數據轉化為C/C++可識別的格式,然后再調用imadjustbyC函數對轉換格式后的輸入數據進行處理,最后將處理結果按MATLAB規范返回。這其中用到的函數mxGetM、mxGetN、mxGetPr、mxCreateDoubleMatrix均是MATLAB提供的API,細節可參閱MATLAB的外部程序接口手冊[12];

4)在MATLAB中輸入命令mex testMEX.c,編譯成功后,生成了可在MATLAB環境中直接調用的模塊testMEX.mexw64;

5)調用testMEX.mexw64和imadjust對數字圖像處理實驗中的一幅標準圖片(圖6a)進行處理,對比實驗結果。調用語句如下:

>>A=imread('cameraman.tif');

>>B=uint8(testMEX(double(A),0.5,0.9,0,1));

>>D=imadjust(A,[0.5 0.9],[0 1]);

圖6b和圖6c給出了兩種方法的處理結果。為比較這兩個結果是否一致,首先將矩陣B和D相減,然后輸出其中絕對值最大的元素。命令語句如下:

電力系統負荷計算研究[J].大連海事大學學報,2013,39(1):103-106.

[10]范芳蕾,李亮玉,周鑫,等.基于VC++與Matlab混合編程的焊接熔池圖像處理[J].天津工業大學學報,2007,26(4):51-53.

[11]劉維.精通Matlab與C/C++混合程序設計[M]四版.北京:北京航天航空大學出版社,2015.

[12]The MathWorks,Inc.MATLAB External Interfaces Reference(R2017a)[EB/OL].(2017-03-01)[2017-03-30].https://www.mathworks.com/help/pdf_doc/matlab/apiext.pdf.

(責任編輯:葉麗娜)

Research on Experimental Teaching of Digital Image Processing Based on M ixed Programm ing Technology of MATLAB and C/C++

WEIYi,LIN Lihui
(School ofMathematics and Computer,WuyiUniversity,Wuyishan,Fujian 354300)

An experimental teachingmethod based onmixed programming technology of MATLAB and C/C++is proposed to solve the difficulty of practice teaching on digital image processing.In thismethod,the graphical user interface,the input/output functions formainstream images’formats and the functions for creating statistical charts are coded by MATLAB.The key algorithms are coded by C/C++and these C/C++programs are compiled into executable files by MATLAB Compiler.This framework in which MATLAB ismaster and C/C++is slave canmake better use of themeritofMATLAB and C/C++in practice of digital image processing,enhance the practicalness of experiments,reduce the difficulty of practice of non-key parts in experiments and improve students’skill of digital image processing effectively.

digital image processing;mixed programming technology ofMATLAB and C/C++;experimental teaching

G642.0

:A

:1674-2109(2017)06-0092-05

2017-03-31

武夷學院引進人才科研啟動項目(YJ201607)。

魏毅(1978-),男,漢族,講師,主要從事虛擬現實的研究。

猜你喜歡
實驗教學實驗
記一次有趣的實驗
關于基礎教育階段實驗教學的幾點看法
科學與社會(2022年1期)2022-04-19 11:38:42
微型實驗里看“燃燒”
小議初中化學演示實驗教學
甘肅教育(2020年4期)2020-09-11 07:42:36
電容器的實驗教學
物理之友(2020年12期)2020-07-16 05:39:20
對初中化學實驗教學的認識和體會
甘肅教育(2020年8期)2020-06-11 06:10:04
做個怪怪長實驗
幾何體在高中數學實驗教學中的應用
NO與NO2相互轉化實驗的改進
實踐十號上的19項實驗
太空探索(2016年5期)2016-07-12 15:17:55
主站蜘蛛池模板: 亚洲色精品国产一区二区三区| 欧美激情视频一区二区三区免费| 国产十八禁在线观看免费| 日本成人在线不卡视频| 国产成人精品亚洲日本对白优播| 最新亚洲人成网站在线观看| 欧美日韩精品一区二区在线线 | 中文无码精品a∨在线观看| 亚洲国产天堂久久综合226114| 日本亚洲国产一区二区三区| 54pao国产成人免费视频| 伊人国产无码高清视频| 夜色爽爽影院18禁妓女影院| 视频一区亚洲| 中文字幕第1页在线播| 国产呦精品一区二区三区下载| 超级碰免费视频91| 国产成人亚洲精品蜜芽影院| 欧美亚洲日韩不卡在线在线观看| 久久大香香蕉国产免费网站| 国产va免费精品观看| 波多野一区| 国产尤物在线播放| 一级毛片免费观看不卡视频| 国产精品三区四区| 色悠久久久| 亚洲国产中文欧美在线人成大黄瓜| 99热这里只有精品免费| 欧美视频在线不卡| 凹凸精品免费精品视频| 久草青青在线视频| 精品无码日韩国产不卡av| 欧美成人影院亚洲综合图| 日韩欧美国产三级| 毛片一区二区在线看| V一区无码内射国产| 欧美精品成人一区二区视频一| 欧美精品色视频| 久久精品66| 亚洲成A人V欧美综合天堂| 999精品色在线观看| 亚洲精品成人7777在线观看| 日本成人福利视频| 亚洲欧洲日韩国产综合在线二区| 色欲不卡无码一区二区| 亚洲欧美日韩久久精品| 亚洲精品自产拍在线观看APP| 欧美精品在线观看视频| 麻豆精品在线播放| 综合人妻久久一区二区精品 | 欧美在线综合视频| 亚洲国语自产一区第二页| 亚洲美女一级毛片| 女人爽到高潮免费视频大全| 免费观看成人久久网免费观看| 99青青青精品视频在线| 丁香六月激情综合| 玩两个丰满老熟女久久网| 美女一级毛片无遮挡内谢| 成人韩免费网站| 天天操精品| 国产高清不卡| 99伊人精品| 亚洲精品你懂的| 欧美一道本| 99热这里只有精品在线观看| 亚洲国内精品自在自线官| 成人国产小视频| 亚洲性网站| 欧美伦理一区| 午夜少妇精品视频小电影| 国产欧美日韩专区发布| 日本免费一级视频| 欧美日韩高清在线| 噜噜噜久久| 午夜精品影院| 欧美中出一区二区| 日韩免费毛片视频| 欧美人与动牲交a欧美精品| 中文纯内无码H| 亚洲欧美日韩另类| 自拍偷拍欧美日韩|