專利名稱:一種圖片存儲(chǔ)與檢索方法
技術(shù)領(lǐng)域:
本發(fā)明涉及硬盤存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及硬盤存儲(chǔ)技術(shù)中的大數(shù)量圖片的存儲(chǔ)與檢索方法。
背景技術(shù):
在硬盤存儲(chǔ)技術(shù)領(lǐng)域,如對(duì)于DVR(digital video recorder,數(shù)字視頻錄像機(jī)),其需要存儲(chǔ)大量的音視頻、圖片等數(shù)據(jù)。對(duì)存儲(chǔ)的內(nèi)容需要及時(shí)存儲(chǔ)并能快速檢索,而且要有效的利用存儲(chǔ)空間。傳統(tǒng)存儲(chǔ)圖片方法是通過(guò)建立多級(jí)文件夾,按圖片的屬性把圖片歸類直接存儲(chǔ)到某個(gè)文件夾中。使用傳統(tǒng)的方式存儲(chǔ)時(shí),當(dāng)圖片數(shù)量過(guò)多后勢(shì)必造成圖片檢索慢,且由于目前大部分文件系統(tǒng)的特性,每個(gè)文件占用的大小比文件實(shí)際大小略大,圖片數(shù)過(guò)多時(shí)磁盤空間的浪費(fèi)也相應(yīng)增加。
發(fā)明內(nèi)容
為克服上述缺陷,本發(fā)明提供了一種大數(shù)量圖片的存儲(chǔ)與檢索方法,該方法包括在硬盤上劃分出一個(gè)分區(qū),其中,使該分區(qū)包含一個(gè)一級(jí)索引,若干個(gè)二級(jí)索引,若干個(gè)三級(jí)索引和相同個(gè)數(shù)的圖片數(shù)據(jù)包(也可以是數(shù)據(jù)塊、或數(shù)據(jù)區(qū));一級(jí)索引劃分為多個(gè)一級(jí)索引單元,每個(gè)一級(jí)索引單元用于記錄二級(jí)索引文件地址和該一級(jí)索引下所有圖片的公共屬性,所述公共屬性包括:圖片的通道號(hào)、圖片的事件編碼、圖片最早時(shí)間、圖片的最晚時(shí)間;二級(jí)索引每個(gè)節(jié)點(diǎn)存放的內(nèi)容包括:圖片的最早時(shí)間、圖片的最晚時(shí)間,以及非葉子節(jié)點(diǎn)有子節(jié)點(diǎn)地址,葉子節(jié)點(diǎn)有三級(jí)索引地址;三級(jí)索引中存放的內(nèi)容包括:圖片數(shù)據(jù)包地址和圖片在圖片數(shù)據(jù)包中的偏移,圖片的長(zhǎng)度和圖片的拍攝時(shí)間,該方法包括以下存儲(chǔ)步驟:A.獲取圖片;B.提取圖片的信息,將圖片的信息匹配至一級(jí)索引;C.若匹配成功,通過(guò)一級(jí)索引定位到二級(jí)索引;D.再根據(jù)二級(jí)索引定位到三級(jí)索引;以及E.通過(guò)三級(jí)索引定位到圖片數(shù)據(jù)包,將圖片存儲(chǔ)到圖片數(shù)據(jù)包,并將圖片在圖片數(shù)據(jù)包中的偏移,圖片的長(zhǎng)度和圖片的拍攝時(shí)間記錄到三級(jí)索引,并更新該圖片所屬的一級(jí)索引和二級(jí)索引的最晚圖片時(shí)間;以及F.返回步驟A ;該方法包括以下檢索步驟:E.根據(jù)輸入的檢索條件依次檢索一級(jí)索引;F.通過(guò)一級(jí)索引定位到二級(jí)索引;G.通過(guò)二級(jí)索引定位到三級(jí)索引;H.通過(guò)三級(jí)索引定位到圖片數(shù)據(jù)包中的圖片,最后讀取圖片。通過(guò)本發(fā)明,尤其是通過(guò)其中的多級(jí)索引可以快速檢索圖片,通過(guò)圖片數(shù)據(jù)包的方式可以減少文件的個(gè)數(shù),減少空間的浪費(fèi)。
圖1為根據(jù)本發(fā)明的一個(gè)實(shí)施方案的一級(jí)索引邏輯結(jié)構(gòu);圖2為根據(jù)本發(fā)明的一個(gè)實(shí)施方案的二級(jí)索引邏輯結(jié)構(gòu);圖3為根據(jù)本發(fā)明的一個(gè)實(shí)施方案的三級(jí)索引邏輯結(jié)構(gòu);圖4為根據(jù)本發(fā)明的一個(gè)實(shí)施方案的添加圖片流程圖;圖5為根據(jù)本發(fā)明的一個(gè)實(shí)施方案的檢索流程圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)例,對(duì)本發(fā)明在DVR中的圖片存儲(chǔ)和圖片檢索分別進(jìn)行進(jìn)一步闡述:以下實(shí)例中一級(jí)索引每個(gè)單元存放的內(nèi)容為:圖片的通道號(hào)、圖片的事件編碼、圖片最早時(shí)間、圖片的最晚時(shí)間、二級(jí)索引地址;二級(jí)索引每個(gè)節(jié)點(diǎn)存放的內(nèi)容:圖片的最早時(shí)間、圖片的最晚時(shí)間、非葉子節(jié)點(diǎn)有子節(jié)點(diǎn)地址,葉子節(jié)點(diǎn)有三級(jí)索引地址;三級(jí)索引頭存放的內(nèi)容為:圖片數(shù)據(jù)包地址;三級(jí)索引其它每個(gè)單元存放的內(nèi)容:圖片在圖片數(shù)據(jù)包中的偏移、圖片的長(zhǎng)度、圖片的拍攝時(shí)間;圖4為根據(jù)本發(fā)明的一個(gè)實(shí)施方案的添加圖片流程圖;以下將參考該圖,描述添加圖片流程。1.根據(jù)硬盤的大小分區(qū),例如使用西數(shù)的IT硬盤,劃分成3個(gè)分區(qū),分別為1G、499G,500G,第二個(gè)分區(qū)499G和第三個(gè)分區(qū)500G用于存放圖片信息。接下來(lái)以第二個(gè)分區(qū)499G為例介紹如何存儲(chǔ)和檢索圖片。格式化第二個(gè)分區(qū),并創(chuàng)建一級(jí)索引文件,創(chuàng)建后該文件具有固定長(zhǎng)度且長(zhǎng)度不可改變。一級(jí)索引存儲(chǔ)方式如圖1所示,劃分為多個(gè)單元,每個(gè)單元大小相同且長(zhǎng)度固定不變。每個(gè)單元用于記錄二級(jí)索引文件地址和該一級(jí)索引下所有圖片的公共屬性等內(nèi)容;2.開(kāi)啟抓圖模塊,存儲(chǔ)圖片。2.1.獲取到一張圖片時(shí),提取它的圖片信息:圖片的通道號(hào),圖片的事件編碼,圖片的拍攝時(shí)間。讀取一級(jí)索引的內(nèi)容,匹配一級(jí)索引中每個(gè)單元的通道號(hào)和圖片事件編碼,找到單元中公共屬性與圖片信息相匹配的最后一個(gè)單元,并根據(jù)該單元存放的二級(jí)索引地址定位到二級(jí)索引;若匹配不成功,找不到匹配的單元,則判斷一級(jí)索引中是否滿(即:一級(jí)索引是否有未使用的一級(jí)索引單元),若沒(méi)有滿,則新建二級(jí)索引,并將二級(jí)索引地址和圖片的信息保存到一級(jí)索引的第一個(gè)未使用的索引單元中,這樣可以保證該單元之前(包括該單元)都是指向二級(jí)索引,該單元之后未使用即未指向二級(jí)索引。為了能夠快速查詢,二級(jí)索引采取B-樹(shù)的存儲(chǔ)方式。新建的二級(jí)索引樹(shù)如圖2所示,該樹(shù)有4層,每個(gè)非葉子節(jié)點(diǎn)只有一個(gè)子節(jié)點(diǎn),且每個(gè)節(jié)點(diǎn)的最早時(shí)間和最晚時(shí)間均為圖片時(shí)間,葉子節(jié)點(diǎn)指向的三級(jí)索引為空(指該葉子節(jié)點(diǎn)未指向下文的三級(jí)索引)。在B-樹(shù)的存儲(chǔ)方式中,若B-樹(shù)的高度N,除葉子節(jié)點(diǎn)外,其余節(jié)點(diǎn)最多有M個(gè)子節(jié)點(diǎn),即最多可存放MN個(gè)三級(jí)索引,若每個(gè)三級(jí)索引可存H個(gè)圖片信息,這顆樹(shù)最多可存MN*H,M、N、H的具體值可根據(jù)實(shí)際應(yīng)用確定。為某一非葉子節(jié)點(diǎn)創(chuàng)建子節(jié)點(diǎn)時(shí),為其連續(xù)分配M個(gè)空間,父節(jié)點(diǎn)和子節(jié)點(diǎn)通過(guò)雙方各記錄對(duì)方的地址方式相關(guān)聯(lián)。2.2.在定位到二級(jí)索引后,在二級(jí)索引中找到前序遍歷中最后一個(gè)葉子節(jié)點(diǎn)。若該葉子節(jié)點(diǎn)未指向三級(jí)索引(或無(wú)效),則建立一個(gè)三級(jí)索引和圖片數(shù)據(jù)包并將圖片數(shù)據(jù)包地址記錄到三級(jí)索引中,將三級(jí)索引信息(如三級(jí)索引地址等)記錄到該節(jié)點(diǎn)中,將圖片數(shù)據(jù)包地址記錄到三級(jí)索引中;若該節(jié)點(diǎn)指向三級(jí)索引(或該節(jié)點(diǎn)指向的三級(jí)索引地址有效),則獲取三級(jí)索引的地址,定位到三級(jí)索引。2.3.定位到三級(jí)索引后,判斷該三級(jí)索引是否存有圖片。三級(jí)索引采用順序存儲(chǔ)方式,每個(gè)三級(jí)索引劃分為I個(gè)頭部信息和H個(gè)圖片信息(H在實(shí)際使用中可取不同值),頭部存放圖片數(shù)據(jù)包地址,每個(gè)圖片信息存放圖片在圖片數(shù)據(jù)包中的偏移量和圖片長(zhǎng)度,如圖3。I)若三級(jí)索引存有圖片;則獲取最后一張圖片信息,比較該圖片日期與現(xiàn)要存的圖片日期,1.D若現(xiàn)要存的圖片日期新,則判斷該三級(jí)索引是否存滿,1.1.D若存滿,在存儲(chǔ)圖片前需要新建三級(jí)索引,并把三級(jí)索引信息添加到二級(jí)索引前序遍歷最后一個(gè)空葉子節(jié)點(diǎn)處;在新建三級(jí)索引和圖片數(shù)據(jù)包前,判斷二級(jí)索引是否滿,若二級(jí)索引也存滿,則需要先新建二級(jí)索引,并把二級(jí)索引信息更新至一級(jí)索引處,將二級(jí)索引地址和圖片的信息保存到一級(jí)索引的第一個(gè)未使用的索引單元中,在新建二級(jí)索引前,要判斷一級(jí)索引是否滿,若一級(jí)索引沒(méi)有滿,則新建二級(jí)索引,若一級(jí)索引滿,則將圖片轉(zhuǎn)存至其他分區(qū)。1.1.2)若未存滿,則把數(shù)據(jù)追加到該單元指向的圖片數(shù)據(jù)包的末尾,并更新三級(jí)索引的內(nèi)容,把圖片信息更新到三級(jí)索引,如記錄該追加圖片的偏移量、長(zhǎng)度和圖片的拍攝時(shí)間等。1.2)若現(xiàn)要存儲(chǔ)的圖片日期舊,則說(shuō)明系統(tǒng)時(shí)間發(fā)生了異常,則新建二級(jí)索引,把二級(jí)索引信息更新到一級(jí)索引中,接下來(lái)的流程跳到2.2繼續(xù)操作;2)若該三級(jí)索引未存圖片,則接下來(lái)的流程同1.1.2)。2.4.更新該圖片所屬的一級(jí)索弓丨,二級(jí)索引各個(gè)節(jié)點(diǎn)的最晚圖片時(shí)間。3.檢索圖片圖5為根據(jù)本發(fā)明的一個(gè)實(shí)施方案的圖片檢索流程圖;以下參考附圖對(duì)該流程中的主要過(guò)程進(jìn)行描述。3.1.輸入搜索條件,根據(jù)輸入的檢索條件依次檢索一級(jí)索引,通過(guò)匹配通道號(hào),圖片的事件編碼,圖片時(shí)間等信息檢索符合的二級(jí)索引3.2.若上述過(guò)程中檢索到符合的二級(jí)索引,則依次檢索二級(jí)索引。二級(jí)索引區(qū)每個(gè)節(jié)點(diǎn)都記錄有該節(jié)點(diǎn)下所有圖片的最早圖片時(shí)間和最晚圖片時(shí)間。從B-樹(shù)的樹(shù)根開(kāi)始檢索,若檢索圖片的時(shí)間在該節(jié)點(diǎn)圖片最早時(shí)間和圖片最晚時(shí)間范圍之內(nèi),則繼續(xù)檢索該節(jié)點(diǎn)的子節(jié)點(diǎn),直到到達(dá)葉子節(jié)點(diǎn),若葉子節(jié)點(diǎn)的時(shí)間范圍符合條件則定位三級(jí)索引。3.3.依次檢索三級(jí)索引,若檢索到符合的,則讀取圖片數(shù)據(jù)。三級(jí)索引從頭至尾是時(shí)間的按順序排列,用時(shí)間為關(guān)鍵字使用二分法查找到符合條件的圖片索引,即可從圖片數(shù)據(jù)包中讀取該圖片內(nèi)容。上述實(shí)施例用來(lái)解釋說(shuō)明本實(shí)用新型,而不是對(duì)本發(fā)明進(jìn)行限制,在本發(fā)明的精神和權(quán)利要求的保護(hù)范圍內(nèi),對(duì)本發(fā)明作出的任何修改和改變,都落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
1.一種大數(shù)量圖片的存儲(chǔ)與檢索方法,該方法包括在硬盤上劃分出一個(gè)分區(qū),其特征在于:使該分區(qū)包含一個(gè)一級(jí)索引,若干個(gè)二級(jí)索引,若干個(gè)三級(jí)索引和相同個(gè)數(shù)的圖片數(shù)據(jù)包;一級(jí)索引劃分為多個(gè)一級(jí)索引單元,每個(gè)一級(jí)索引單元用于記錄二級(jí)索引文件地址和該一級(jí)索引下所有圖片的公共屬性,所述公共屬性包括:圖片的通道號(hào)、圖片的事件編碼、圖片最早時(shí)間、圖片的最晚時(shí)間;二級(jí)索引每個(gè)節(jié)點(diǎn)存放的內(nèi)容包括:圖片的最早時(shí)間、圖片的最晚時(shí)間,以及非葉子節(jié)點(diǎn)有子節(jié)點(diǎn)地址,葉子節(jié)點(diǎn)有三級(jí)索引地址;三級(jí)索引中存放的內(nèi)容包括:圖片數(shù)據(jù)包地址和圖片在圖片數(shù)據(jù)包中的偏移,圖片的長(zhǎng)度和圖片的拍攝時(shí)間,該方法包括以下存儲(chǔ)步驟: A.獲取圖片; B.提取圖片的信息,將圖片的信息匹配至一級(jí)索引; C.若匹配成功,通過(guò)一級(jí)索引定位到二級(jí)索引; D.再根據(jù)二級(jí)索引定位到三級(jí)索引;以及 E.通過(guò)三級(jí)索引定位到圖片數(shù)據(jù)包,將圖片存儲(chǔ)到圖片數(shù)據(jù)包,并將圖片在圖片數(shù)據(jù)包中的偏移,圖片的長(zhǎng)度和圖片的拍攝時(shí)間記錄到三級(jí)索引,并更新該圖片所屬的一級(jí)索引和級(jí)索引的最晚圖片時(shí)間;以及 F.返回步驟A; 該方法包括以下檢索步驟: E.根據(jù)輸入的檢 索條件依次檢索一級(jí)索引; F.通過(guò)一級(jí)索引定位到二級(jí)索引; G.通過(guò)二級(jí)索引定位到三級(jí)索引; H.通過(guò)三級(jí)索引定位到圖片數(shù)據(jù)包中的圖片,最后讀取圖片。
2.根據(jù)權(quán)利要求1所述的一種大數(shù)量圖片的存儲(chǔ)與檢索方法,其特征在于: 在提取圖片的信息,將圖片的信息匹配至一級(jí)索引的過(guò)程中,若匹配不成功,則判斷一級(jí)索引中是否滿,若沒(méi)有滿,則新建二級(jí)索引,并將二級(jí)索引地址和圖片的信息保存到一級(jí)索引的第一個(gè)未使用的索引單元中,若滿,則將圖片轉(zhuǎn)存至其他分區(qū);若匹配成功,則選擇符合條件的最后一個(gè)一級(jí)索引單元,并根據(jù)該單元存放的二級(jí)索引地址定位到二級(jí)索引。
3.根據(jù)權(quán)利要求2所述的一種大數(shù)量圖片的存儲(chǔ)與檢索方法,其特征在于:二級(jí)索引采取B-樹(shù)的存儲(chǔ)方式;在定位到二級(jí)索引后,在二級(jí)索引中找到前序遍歷中最后一個(gè)葉子節(jié)點(diǎn),若該葉子節(jié)點(diǎn)指向三級(jí)索引,則定位到三級(jí)索引;若該葉子節(jié)點(diǎn)未指向三級(jí)索引,則新建三級(jí)索引和圖片數(shù)據(jù)包,將該新建的三級(jí)索引信息記錄到該葉子節(jié)點(diǎn)處,將新建的圖片數(shù)據(jù)包地址記錄到該三級(jí)索引中。
4.根據(jù)權(quán)利要求3所述的一種大數(shù)量圖片的存儲(chǔ)與檢索方法,其特征在于:定位到三級(jí)索引后,判斷該三級(jí)索引是否存有圖片,若存有圖片,則獲取最后一張圖片信息,比較該圖片日期與現(xiàn)要存的圖片日期,若現(xiàn)要存的圖片日期新,則判斷該三級(jí)索引是否存滿,若未存滿或者該三級(jí)索引未存圖片,則把圖片存儲(chǔ)到該三級(jí)索引指向的圖片數(shù)據(jù)包的末尾,并把圖片在圖片數(shù)據(jù)包中的偏移,圖片的長(zhǎng)度和圖片的拍攝時(shí)間更新到三級(jí)索引,若存滿,則在存儲(chǔ)圖片前先新建三級(jí)索引和圖片數(shù)據(jù)包,將新建的三級(jí)索引信息記錄到二級(jí)索引前序遍歷最后一個(gè)空葉子節(jié)點(diǎn)處,將新建的圖片數(shù)據(jù)包地址記錄到三級(jí)索引中。
5.根據(jù)權(quán)利要求4所述的一種大數(shù)量圖片的存儲(chǔ)與檢索方法,其特征在于:若現(xiàn)要存儲(chǔ)的圖片日期舊,則判斷判斷一級(jí)索引是否滿,若一級(jí)索引沒(méi)有滿,則新建二級(jí)索引,并將二級(jí)索引地址和圖片的信息保存到一級(jí)索引的第一個(gè)未使用的索引單元中,繼而通過(guò)一級(jí)索引定位到二級(jí)索引,在二級(jí)索引中找到前序遍歷中最后一個(gè)葉子節(jié)點(diǎn),若該葉子節(jié)點(diǎn)指向三級(jí)索引,則定位到三級(jí)索引,若該葉子節(jié)點(diǎn)未指向三級(jí)索引,則新建三級(jí)索引和圖片數(shù)據(jù)包;若一級(jí)索引滿,則將圖片轉(zhuǎn)存至其他分區(qū)。
6.根據(jù)權(quán)利要求5所述的一種大數(shù)量圖片的存儲(chǔ)與檢索方法,在新建三級(jí)索引和圖片數(shù)據(jù)包前,判斷二級(jí)索引是否滿,若二級(jí)索引滿,則判斷一級(jí)索引是否滿,若一級(jí)索引沒(méi)有滿,則新建二級(jí)索引,并將二級(jí)索引地址和圖片的信息保存到一級(jí)索引的第一個(gè)未使用的索引單元中,若一級(jí)索引滿,則將圖片轉(zhuǎn)存至其他分區(qū)。
7.根據(jù)權(quán)利要求3、4、5或6所述的一種大數(shù)量圖片的存儲(chǔ)與檢索方法,其特征在于:每個(gè)一級(jí)索引單元大小相同且長(zhǎng)度固定不變。
8.根據(jù)權(quán)利要求7所述的一種大數(shù)量圖片的存儲(chǔ)與檢索方法,其特征在于:根據(jù)輸入的檢索條件依次檢索一級(jí)索引的步驟包括:通過(guò)匹配圖片的通道號(hào),圖片的事件編碼,圖片時(shí)間信息找出適合的二級(jí)索引。
9.根據(jù)權(quán)利要求8所述的一種大數(shù)量圖片的存儲(chǔ)與檢索方法,其特征在于:從B-樹(shù)的樹(shù)根開(kāi)始檢索,若檢索圖片的時(shí)間在該節(jié)點(diǎn)圖片最早時(shí)間和圖片最晚時(shí)間范圍之內(nèi),則繼續(xù)檢索該節(jié)點(diǎn)的子節(jié)點(diǎn),直到到達(dá)葉子節(jié)點(diǎn),若葉子節(jié)點(diǎn)的時(shí)間范圍符合條件則定位三級(jí)索引;依次檢索三級(jí)索引,若檢索到符合的,則讀取圖片數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的一種大數(shù)量圖片的存儲(chǔ)與檢索方法,其特征在于:所述圖片為視頻數(shù)字錄像機(jī)中所 接收的圖片。
全文摘要
本發(fā)明涉及一種大數(shù)量圖片的存儲(chǔ)與檢索方法,包括在硬盤上劃分分區(qū),使該分區(qū)包含一級(jí)索引,二級(jí)索引,三級(jí)索引和圖片數(shù)據(jù)包;三級(jí)索引中存放的內(nèi)容包括圖片數(shù)據(jù)包地址和圖片在圖片數(shù)據(jù)包中的偏移,圖片的長(zhǎng)度和圖片的拍攝時(shí)間,該方法包括以下存儲(chǔ)步驟獲取圖片;提取圖片的信息,將圖片的信息匹配至一級(jí)索引;若匹配成功,通過(guò)一級(jí)索引定位到二級(jí)索引;再根據(jù)二級(jí)索引定位到三級(jí)索引;以及通過(guò)三級(jí)索引定位到圖片數(shù)據(jù)包,將圖片存儲(chǔ)到圖片數(shù)據(jù)包,并將圖片在圖片數(shù)據(jù)包中的偏移,圖片的長(zhǎng)度和圖片的拍攝時(shí)間記錄到三級(jí)索引,并更新該圖片所屬的一級(jí)索引和二級(jí)索引的最晚圖片時(shí)間;以及繼續(xù)獲取圖片;該方法還包括相應(yīng)的檢索步驟。
文檔編號(hào)G06F17/30GK103092848SQ201110336050
公開(kāi)日2013年5月8日 申請(qǐng)日期2011年10月28日 優(yōu)先權(quán)日2011年10月28日
發(fā)明者吳立, 潘海江, 楊斌, 姚國(guó)勤, 陳小軍, 張興明, 傅利泉, 朱江明, 吳軍, 吳堅(jiān) 申請(qǐng)人:浙江大華技術(shù)股份有限公司