亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        數(shù)據(jù)結構案例教學
        —二叉樹在圖像分割中的應用

        2016-06-16 06:22:32劉國英王煜龍陳雙浩
        安陽師范學院學報 2016年2期
        關鍵詞:二叉樹圖像分割數(shù)據(jù)結構

        劉國英,王煜龍,陳雙浩

        (安陽師范學院 計算機與信息工程學院,河南 安陽 455002)

        ?

        數(shù)據(jù)結構案例教學
        —二叉樹在圖像分割中的應用

        劉國英,王煜龍,陳雙浩

        (安陽師范學院 計算機與信息工程學院,河南 安陽 455002)

        [摘要]數(shù)據(jù)結構是計算機相關專業(yè)的核心基礎課。掌握數(shù)據(jù)結構有關知識對學生進一步學習后續(xù)課程起著至關重要的作用,有助于提高學生設計復雜軟件的能力。然而,傳統(tǒng)的教學方法過于強調(diào)抽象數(shù)據(jù)類型的定義及對應的實現(xiàn)方法,而使得讓學生覺得枯燥和困難。本文以二叉樹在圖像分割中的應用為案例,利用最優(yōu)二叉樹的性質(zhì)、二叉樹的遍歷方法等知識點,設計圖像分割算法,并進行了簡單分析。教學實踐表明,數(shù)據(jù)結構的案例教學比傳統(tǒng)教學更能提高教學質(zhì)量。

        [關鍵詞]數(shù)據(jù)結構;二叉樹;圖像分割;案例教學

        數(shù)據(jù)結構是計算機及相關專業(yè)的一門核心課程,對學生深入學習計算機專業(yè)知識具有至關重要的作用。二叉樹作為一種應用極其廣泛的數(shù)據(jù)結構,是學生必須掌握的一個知識點。然而,該結構相對線性結構更加抽象和復雜,常用教材中采用的案例非常少,這對學生理解產(chǎn)生巨大障礙。雖然有教師設計了不同的案例方法[1],但仍然顯不夠。

        當前,多媒體智能信息處理技術一直引領計算機學科的發(fā)展。其中,圖像分割是圖像及視頻信息處理的一個基礎研究課題,在遙感、農(nóng)業(yè)、軍事等領域應用非常廣泛。圖像分割技術的深入研究對數(shù)據(jù)結構理論體系的發(fā)展和應用提出了更高的要求。很多人在圖像分割領域進行了研究[2-5]。因此,為了拓展學生的知識面,提高學生學習的熱情,本文以圖像分割為背景,設計數(shù)據(jù)結構中二叉樹的案例教學方法。

        1基本知識

        1.1圖像分割與二叉樹結構

        對圖像分割的研究一直是圖像處理中的重點和熱點[2]。圖像分割的目的是將圖像劃分為互不重疊的圖像區(qū)域,并要求圖像區(qū)域內(nèi)部的像素具有相同的屬性,比如顏色和紋理。在圖像分割中,獲得的圖像區(qū)域個數(shù)就成為圖像的類別數(shù)。

        二叉樹是指樹種任一結點的度小于2的樹,即任一結點最多有兩棵子樹,并且二叉樹的子樹有左右之分,其次序不能顛倒[6]。這表明二叉樹或為空,或為一個根節(jié)點加上兩棵分別稱為左子樹和右子樹的、互不相交的二叉樹組成。這兩棵子樹也是二叉樹。因此,二叉樹是遞歸定義的。因為二叉樹不同子樹上的節(jié)點是互不相交的,這與圖像分割中各個分割區(qū)域之間互不重疊的要求是一致的。所以,利用二叉樹的性質(zhì)設計圖像分割算法符合該研究問題的特點。

        1.2二叉樹的遍歷

        遍歷二叉樹是指按照某條搜索路徑巡訪樹中每個結點,使得每個結點均被訪問一次,而且僅被訪問一次[6]。由二叉樹的遞歸定義可知,二叉樹是由3個基本單元組成:根節(jié)點、左子樹和右子樹。因此,二叉樹的遍歷即為按照某種順序依次訪問這三部分的算法。根據(jù)根結點的訪問次序,有三種二叉樹遍歷方法:先序遍歷、中序遍歷和后序遍歷。先序遍歷是指先訪問根節(jié)點,再依次遍歷左子樹和右子樹。中序遍歷是指先遍歷左子樹,再訪問根結點,最后遍歷右子樹。后序遍歷指先依次遍歷左子樹和右子樹,最后再訪問根結點。

        本文的案例教學中,在獲得圖像分割過程所對應的二叉樹后,使用先序遍歷的方法確定每一結點屬于哪個類別,并生成最終的分割結果。

        1.3最優(yōu)二叉樹

        最優(yōu)二叉樹是指帶權路徑長度最小的二叉樹,又稱作赫夫曼樹[6]。在該樹種沒有度為1的結點。因此,一個有n個葉子結點的最優(yōu)二叉樹共有2n-1個結點。因為,在構造最優(yōu)二叉樹后,經(jīng)常需要從葉子結點出發(fā)尋找一條到根結點的路徑。比如,赫夫曼編碼時需要根據(jù)從根結點到葉子結點的路徑來確定編碼,本文案例教學所用的圖像分割實例也需要依據(jù)從葉子結點到根結點的路徑來確定葉子節(jié)點對應像素所在的類別。為此,在最優(yōu)二叉樹的結點結構中,除了包含所需的數(shù)據(jù)信息外,一般還包含三個指針:父結點指針 、左子樹指針和右子樹指針。增加父結點指針為訪問父結點提供了便利。

        2基于最優(yōu)二叉樹的圖像分割案例

        2.1分割算法設計

        假設待分割圖像表示為像素集合{Pi|i=1,2,…,N},其中N為圖像的像素個數(shù)。為了減少算法處理的數(shù)據(jù)量,本案例教學設計的分割方法針對灰度圖像的256個灰度值進行處理。假設分割的類別數(shù)為K,基于二叉樹進行圖像分割的算法描述如下:

        (1) N個像素構成N棵二叉樹的集合F={T1,T2,…,TN},其中每棵二叉樹只有一個根節(jié)點,其左右子樹均為空;

        (2) 采用一定的策略,在F中選取兩棵樹作為左右子樹構造一棵新的二叉樹;

        (3) 在F中刪除這兩棵樹,同時將新得到的二叉樹加入F中;

        (4) 重復(2)和(3),直到F中包含的二叉樹的個數(shù)為K。這時,F(xiàn)中每一棵二叉樹對應圖像的一個分割區(qū)域。對每一棵二叉樹執(zhí)行葉子結點的遍歷操作,即可獲得對應類別在圖像中的真實分割區(qū)域。

        2.2算法順序表示與實現(xiàn)

        為了運算簡便,在執(zhí)行步驟(2)時,本文采用如下準則進行二叉樹選擇:兩個根結點對應圖像區(qū)域的灰度均值最接近。為此,在本案例中,我們設計如下的最優(yōu)二叉樹結點結構:

        typedef struct{

        int rootId; //該結點的存儲索引

        double meanValue; // 灰度均值

        int pixlNumber; //以該結點為根的像素個數(shù)

        unsigned int parent, lchild, rchild; //父結點、孩子結點在二叉節(jié)點列表中的存儲位置

        }BTNode, *BestBiTree;

        對應的森林F存儲在結構體數(shù)組中,大小為2n-K-1。上述結構體中的三個整形變量表示每一個結點的父結點、左右孩子在結構體數(shù)組中的存儲單元下標。如果某一結點的父結點為0,表示該結點為樹的根結點;F中樹的個數(shù)表示當前圖像的分割類別數(shù)。因此,構造最優(yōu)二叉樹的過程就是圖像分割的過程。圖像分割的算法實現(xiàn)如下:

        void BestTreeSegmentation(double *pImage, double *pSegmentation, int width, int height, int K)

        // pImage為指向灰度圖像數(shù)據(jù)的指針, pSegmentation為分割結果指針

        // width和height為圖像的高和寬,K為圖像的分類個數(shù)

        {

        if (K<2) return;

        if(pSegmentation==NULL) return;

        int n = 256;// 圖像灰度級的總個數(shù)

        //統(tǒng)計每一灰度級出現(xiàn)的頻度, gFred[i]為灰度gId[i]在圖像中出現(xiàn)的次數(shù)

        [gFreq, gId] = imgHist(pImage, width, height);

        // 統(tǒng)計每一灰度級對應的像素集合, pxlSet[i]為灰度級gId[i]對應的像素位置集合的指針

        pxlSet = GetPixelSet(pImage, gId, width, height);

        int m = 2*n-1-K; // 獲取最終分割結果時,F(xiàn)中總共的結點個數(shù)

        Forest = (BestBiTree)malloc(m*sizeof(BTNode));

        double disMatrix[m][m]; // 根結點距離矩陣,取值越小,樹的灰度越接近

        for(i=0; i

        Forest[i].parent = 0;

        for(j=0;j

        disMatrix[i][j] = Inf;

        }

        }

        for(i=0;i

        Forest(i) = {i,gId[i],dFreq[i],0,0,0};

        for(j=i+1;j

        disMatrix[i][j] = abs(gId[i]-gId[j]);// 計算初始的相似度取值

        }

        // 創(chuàng)建Forest中的每棵二叉樹

        for(i=n;i

        //選擇根結點灰度值最接近的兩棵樹tree1,tree2

        [tree1, tree2] = selectTree(Forest, disMatrix, i);

        Forest[tree1].parent=Forest[tree2].parent = i;

        Forest[i].pxlNumber = Forest[tree1].pxlNumber+Forest[tree2].pxlNumber;

        Forest[i].lchild=tree1; Forest[i].rchild = tree2;

        Forest[i].rootId = i;

        Forest[i].meanValue = (Forest[tree1].pxlNumber* Forest[tree1].meanValue

        + Forest[tree2].pxlNumber* Forest[tree2].meanValue )/Forest[i].pxlNumber;

        // 更新disMatrix取值

        for(j=1;j

        disMatrix[j][i] = abs(Forest[j].meanValue-Forest[i].meanValue);

        }

        }

        //從構造的二叉樹森林中獲取分割結果

        cls = 1;

        for(i=0;i

        if(Forest[i].parent==0)//節(jié)點i為樹根

        InitSet(leavesSet);//將葉子結點集合leavesSet初始化為空集合

        PreOrderTrevers(Forest,i,leavesSet);//先序遍歷獲得葉子結點集合

        setNumber = Length(leavesSet);// 獲得集合大小

        InitSet(treePixelSet);// 初始化一個空的集合,用來存儲像素的索引

        for(j=0;j< setNumber;j++){

        //合并同一棵樹的葉子結點對應的像素索引集合

        treePixelSet = union(treePixelSet, pixelSet[leavesSet[j]]);

        }

        // 將pSegmentation中的在treePixelSet中的像素索引位置均設為cls

        setValues(pSegmentation, treePixelSet, cls);

        cls++;

        }

        }

        先序遍歷算法的偽代碼如下:

        void PreOrderTravers(BestBiTree Forest, int root, int * &pixelSet)

        {

        if(Forest[root].lchild==0 && Forest[root].rchild==0)

        pixelSet = union(pixelSet, Forest[root].rootId);

        else{

        PreOrderTravers(Forest, Forest[i].lchild, pixelSet);

        PreOrderTravers(Forest, Forest[i].rchild, pixelSet);

        }

        }

        2.3案例算法運行結果

        為了檢驗案例算法的分割效果,在教學過程中我們選用一幅大小為256*256的全色遙感影像進行算法測試。實驗中,我們設定類別數(shù)K=6,對應的分割結果如圖1所示。分割結果使用彩色表示是為了增加不同類別之間的視覺差別。從圖中可以看出,使用二叉樹結構進行圖像分割能夠完成圖像分割所要求的功能。

        (a)                 (b)圖1 案例算法運行結果 (a)待分割圖像; (b) 分割結果

        該分割算法只考慮了像素灰度值之間的大小關系,沒有考慮任何的空間信息。因此,分割結果中存在較多的類別孤島。為了能夠?qū)⒅T如邊界、鄰域等信息引入分割過程,需要設計更為復雜的數(shù)據(jù)結構,這對進一步深入研究數(shù)據(jù)結構相關的理論與算法提出了更高的要求。

        3結束語

        數(shù)據(jù)結構是計算機相關專業(yè)學生公認的難度比較大的一門核心基礎課。傳統(tǒng)的教學方法完全按照抽象數(shù)據(jù)類型的設計來安排教學,內(nèi)容過于抽象。學生學習難度大,且感覺枯燥乏味。采用案例教學法,能讓學生從抽象乏味的理論知識中解脫出來,并讓學生感覺到學習數(shù)據(jù)結構的應用價值。尤其是結合計算機學科的發(fā)展動態(tài),聯(lián)系學生感興趣的內(nèi)容進行案例教學,能在拓展學生視野的同時,讓大家更好地掌握相關知識。

        [參考文獻]

        [1]張曉玲, 黎蔚, 劉欣亮,等. 電腦知識與技術, 2007(13): 295-296.

        [2]章毓晉. 中國圖像工程:2003[J]. 中國圖象圖形學報, 9A(5): 481~498.

        [3]Guoying Liu, Yun Zhang, and Aimin Wang. Incorporating adaptive local information into fuzzy clustering image segmentation. IEEE Transactions on Image Processing, 2015,24(11):3990-4000.

        [4]Ji, Z., Liu, J., Cao, G., Sun, Q., and Chen, Q. Robust spatially constrained fuzzy c-means algorithm for brain MR image segmentation[J]. Pattern Recognition, 2014,47(7):2454-2466.

        [5]周原, 田麗芳. 基于圖論最優(yōu)二叉樹算法的圖像分割研究[J]. 激光雜志, 2014,35(8): 23-25.

        [6]嚴蔚敏, 吳偉民. 數(shù)據(jù)結構(C語言版)[M]. 北京:清華大學出版社, 1997.

        [責任編輯:江雪]

        Example Teaching of Data Structure- the Application of Binary Tree in Image Segmentation

        LIU Guo-ying, WANG Yu-long, CHEN Shuang-hao

        (Department of Computer and Information Engineering, Anyang Normal University, Anyang 455002, China)

        Abstract:Data structure is one of the core courses for students who major in computer and other relevant disciplines. It is of the critical roles for students to learn successive courses. Besides, it is also very important for the enhancement of their ability to design complex software systems. However, in the conventional classes, teachers only focus on the definition of abstract data types and their implementation, which make students feel very boring and difficulty. In this paper, we employ image segmentation as an example of the application of binary structure. By making use of the properties of binary tree, such as the properties of the best binary tree and the methods of binary tree traverse, we designed an image segmentation method, and then simply analyzed its performance by using a piece of remote sensing image. Our applications in teaching show that example teaching method can achieve higher teaching quality than the conventional one.

        Key words:data structure;binary tree;image segmentation;example teaching

        [收稿日期]2016-01-01

        [基金項目]計算機科學與技術國家級特色專業(yè)(TS11576);國家自然科學基金(41001251);河南省科技公關項目(152102410042、132102210212);河南省教育廳資助項目(13A520011);河南省青年骨干教師項目(2011-148);安陽師范學院《數(shù)據(jù)結構》精品資源共享課程。

        [作者簡介]劉國英(1979-),男,博士,副教授,主要從事遙感影像信息提取研究。

        [中圖分類號]G642

        [文獻標識碼]A

        [文章編號]1671-5330(2016)02-0128-04

        猜你喜歡
        二叉樹圖像分割數(shù)據(jù)結構
        CSP真題——二叉樹
        電腦報(2022年37期)2022-09-28 05:31:07
        二叉樹創(chuàng)建方法
        一種由層次遍歷和其它遍歷構造二叉樹的新算法
        一種改進的分水嶺圖像分割算法研究
        科技視界(2016年26期)2016-12-17 16:25:03
        基于LabVIEW雛雞雌雄半自動鑒別系統(tǒng)
        一種圖像超像素的快速生成算法
        基于魯棒性的廣義FCM圖像分割算法
        “翻轉(zhuǎn)課堂”教學模式的探討——以《數(shù)據(jù)結構》課程教學為例
        高職高專數(shù)據(jù)結構教學改革探討
        中國市場(2016年45期)2016-05-17 05:15:48
        TRIZ理論在“數(shù)據(jù)結構”多媒體教學中的應用
        粉嫩少妇内射浓精videos| 男女av免费视频网站| 艳妇臀荡乳欲伦交换h在线观看| 久久伊人最新网址视频| 亚洲va无码va在线va天堂| 亚洲精品字幕| 亚洲AV无码成人网站久久精品| 国产精品亚洲av国产| 男女射精视频在线观看网站| 亚洲最大成人综合网720p| 丰满少妇被粗大猛烈进人高清| 无码精品久久久久久人妻中字| 无码中文字幕加勒比一本二本| 亚洲色欲Aⅴ无码一区二区| 成人全视频在线观看免费播放| 亚洲一区二区免费在线观看视频| 精品人妻无码视频中文字幕一区二区三区| 五月天激情综合网| 韩国美女主播国产三级| 中国亚洲一区二区视频| 午夜福利院电影| 亚洲高清无码第一| 亚洲熟女一区二区三区不卡| 国产高颜值女主播在线| 国产肥熟女视频一区二区三区| 午夜精品一区二区三区在线观看| 无码电影在线观看一区二区三区| 日韩人妻无码中文字幕一区| 日韩极品免费在线观看| 麻豆精品一区二区av白丝在线| 欧美 丝袜 自拍 制服 另类| 99热这里只有精品国产66| 亚洲av免费高清不卡| 激情五月婷婷一区二区| 国产高颜值大学生情侣酒店| 精品在免费线中文字幕久久| 久久99精品久久只有精品| 性猛交╳xxx乱大交| 中文字幕在线码一区| 久久免费网站91色网站| 性av一区二区三区免费|