Nén dữ liệu Ảnh part 2
Số trang: 11
Loại file: pdf
Dung lượng: 395.34 KB
Lượt xem: 16
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Chức năng của các hàm: InitDictionary() : Hàm này có chức năng khởi tạo từ điển. Đặt giá trị cho 256 phần tử đầu tiên. Gán mã xoá (Clear Code) cho phần tử thứ 256 và mã kết thúc thông tin (End Of Information) cho phần tử thứ 257. Xoá giá trị tất cả các phần tử còn lại. Hàm Output() : gửi chuỗi bit ra file. Chuỗi bit này có độ dài là 9,10,11 hoặc 12 tuỳ thuộc vào vị trí trong từ điển của từ mã gửi ra.Các chuỗi bit này được nối tiếp vào với...
Nội dung trích xuất từ tài liệu:
Nén dữ liệu Ảnh part 2 Ch¬ng T¸m: nÐn d÷ liÖu ¶nh- Chøc n¨ng cña c¸c hµm: InitDictionary() : Hµm nµy cã chøc n¨ng khëi t¹o tõ ®iÓn. §Æt gi¸ trÞ cho 256 phÇntö ®Çu tiªn. G¸n m· xo¸ (Clear Code) cho phÇn tö thø 256 vµ m· kÕt thóc th«ng tin(End Of Information) cho phÇn tö thø 257. Xo¸ gi¸ trÞ tÊt c¶ c¸c phÇn tö cßn l¹i. Hµm Output() : göi chuçi bit ra file. Chuçi bit nµy cã ®é dµi lµ 9,10,11 hoÆc 12 tuúthuéc vµo vÞ trÝ trong tõ ®iÓn cña tõ m· göi ra.C¸c chuçi bit nµy ®îc nèi tiÕp vµo víinhau. Hµm GetNextChar(): Tr¶ vÒ mét kÝ tù tõ chuçi kÝ tù ®Çu vµo. Hµm nµy cËp nhËt gi¸trÞ cña cê INPUT x¸c ®Þnh xem cßn d÷ liÖu ®Çu vµo n÷a hay kh«ng. Hµm AddtoDictionary() sÏ ®îc gäi khi cã mét mÉu míi xuÊt hiÖn. Hµm nµy sÏ cËpnhËt mÉu nµy vµo phÇn tö tiÕp theo trong tõ ®iÓn. NÕu tõ ®iÓn ®· ®Çy nã sÏ göi ra m·xo¸(Clear Code) vµ gäi ®Õn hµm InitDictionary() ®Ó khëi t¹o l¹i tõ ®iÓn. Hµm Code(): Tr¶ vÒ tõ m· øng víi mét chuçi. T tëng cña ®o¹n m· trªn cã thÓ hiÓu nh sau: NÕu cßn d÷ liÖu ®Çu vµo th×tiÕp tôc ®äc. Mét chuçi míi sÏ ®îc t¹o ra tõ chuçi cò(chuçi nµy ban ®Çu trèng, chuçinµy ph¶i lµ chuçi ®· tån t¹i trong tõ ®iÓn) vµ kÝ tù võa ®äc vµo. Sau ®ã kiÓm tra xemchuçi míi ®· cã trong tõ ®iÓn hay cha. Môc ®Ých cña c«ng viÖc nµy lµ hi väng t×m®îc chuçi cã sè kÝ tù lín nhÊt ®· tån t¹i trong tõ ®iÓn. NÕu tån t¹i ta l¹i tiÕp tôc ®äcmét kÝ tù tiÕp theo vµ lÆp l¹i c«ng viÖc. NÕu cha cã trong tõ ®iÓn, th× göi chuçi cò rangoµi vµ thªm chuçi míi vµo tõ ®iÓn. Cã thÓ xem l¹i phÇn vÝ dô ®Ó hiÓu râ h¬n. B¾t ®Çu InitDictionary() Output(Clear_Code) OldStr = NULL - Ouput(Code(OldStr)) INPUT OutPut(EOI) + NewChar = GetNextChar() NewStr = OldStr + NewChar KÕt 38 2 thócNhËp m«n xö lý ¶nh sè - §HBK Hµ néi Ch¬ng T¸m: nÐn d÷ liÖu ¶nh H×nh 8.3. S¬ ®å thuËt to¸n nÐn LZWGi¶i nÐn d÷ liÖu nÐn b»ng LZW Gi¶i thuËt gi¶i nÐn gÇn nh ngîc víi gi¶i thuËt nÐn . Víi gi¶i thuËt nÐn, mét tõm· øng víi mét chuçi sÏ ®îc ghi ra tÖp khi chuçi ghÐp bëi chuçi trªn víi kÝ tù võa®äc cha cã mÆt trong tõ ®iÓn. Ngêi ta còng cËp nhËt ngay vµo tõ ®iÓn tõ m· øng víichuçi t¹o bëi chuçi cò víi kÝ tù võa ®äc. KÝ tù nµy ®ång thêi lµ kÝ tù ®Çu tiªn trongchuçi øng víi tõ m· sÏ®îc ghi ra tiÕp theo. §©y lµ ®iÓm mÊu chèt cho phÐp x©y dùng thuËt to¸n gi¶i nÐn.ThuËt to¸n ®îc m« t¶ nh sau: while(GetNextCode() != EOI) do Begin if FIRST_CODE /* M· ®Çu tiªn cña mçi m¶nh ¶nh*/ Then Begin 239NhËp m«n xö lý ¶nh sè - §HBK Hµ néi Ch¬ng T¸m: nÐn d÷ liÖu ¶nh OutBuff(code); OldStr := code; End; If code = CC /* M· xo¸*/ Then Begin InitDictionary(); FIRST_CODE = TRUE; End; NewStr := DeCode(code); OutBuff(NewStr); OldString = OldStr + FirstChar(NewStr); AddtoDictionary(OldStr); OldString := NewStr; End; + Gi¸ trÞ cê FIRST_CODE = TRUE chØ m· võa ®äc lµ m· ®Çu tiªn cña mçim¶nh ¶nh. M· ®Çu tiªn cã c¸ch xö lÝ h¬i kh¸c so víi c¸c m· tiÕp theo. + M· CC b¸o hiÖu hÕt mét m¶nh ¶nh. M· EOI b¸o hiÖu hÕt toµn bé th«ng tin¶nh. +Chøc n¨ng cña c¸c hµm: GetNextCode() : Hµm nµy ®äc th«ng tin ®Çu vµo(d÷ liÖu nÐn) tr¶ vÒ m· t¬ng øng.Chóng ta nhí l¹i r»ng, d÷ liÖu nÐn gåm chuçi c¸c tõ m· nèi tiÕp nhau. Ban ®Çu lµ 9bit, sau ®ã t¨ng lªn 10 bit råi 11, 12 bit. NhiÖm vô cña hµm nµy kh«ng ph¶i ®¬n gi¶n.§Ó biÕt ®îc t¹i thêi ®iÓm hiÖn thêi, tõ m· dµi bao nhiªu bit ta ph¶i lu«n theo dâi tõ®iÓn vµ cËp nhËt ®é dµi tõ m· t¹i c¸c phÇn tö thø 512, 1024, 2048. OutBuff() Hµm nµy göi chuçi gi¸ trÞ ®· gi¶i m· ra vïng nhí ®Öm. DeCode() Hµm nµy tra cøu tõ ®iÓn vµ tr¶ vÒ chuçi kÝ tù t¬ng øng víi tõ m·. FirstChar() LÊy kÝ tù ®Çu tiªn cña mét chuçi. KÝ tù võa x¸c ®Þnh nèi tiÕp vµo chuçikÝ tù cò (®· gi¶i m· ë bíc tríc) ta ®îc chuçi kÝ tù cã mÆt trong tõ ®iÓn khi nÐn.Chuçi nµy sÏ ®îc thªm vµo tõ ®iÓn gi¶i nÐn. 240NhËp m«n xö lý ¶nh sè - §HBK Hµ néi Ch¬ng T¸m: nÐn d÷ liÖu ¶nh Hµm Output() : göi chuçi bit ra file. Chuçi bit nµy cã ®é dµi lµ 9,10,11 hoÆc 12 tuúthuéc vµo vÞ trÝ trong t ...
Nội dung trích xuất từ tài liệu:
Nén dữ liệu Ảnh part 2 Ch¬ng T¸m: nÐn d÷ liÖu ¶nh- Chøc n¨ng cña c¸c hµm: InitDictionary() : Hµm nµy cã chøc n¨ng khëi t¹o tõ ®iÓn. §Æt gi¸ trÞ cho 256 phÇntö ®Çu tiªn. G¸n m· xo¸ (Clear Code) cho phÇn tö thø 256 vµ m· kÕt thóc th«ng tin(End Of Information) cho phÇn tö thø 257. Xo¸ gi¸ trÞ tÊt c¶ c¸c phÇn tö cßn l¹i. Hµm Output() : göi chuçi bit ra file. Chuçi bit nµy cã ®é dµi lµ 9,10,11 hoÆc 12 tuúthuéc vµo vÞ trÝ trong tõ ®iÓn cña tõ m· göi ra.C¸c chuçi bit nµy ®îc nèi tiÕp vµo víinhau. Hµm GetNextChar(): Tr¶ vÒ mét kÝ tù tõ chuçi kÝ tù ®Çu vµo. Hµm nµy cËp nhËt gi¸trÞ cña cê INPUT x¸c ®Þnh xem cßn d÷ liÖu ®Çu vµo n÷a hay kh«ng. Hµm AddtoDictionary() sÏ ®îc gäi khi cã mét mÉu míi xuÊt hiÖn. Hµm nµy sÏ cËpnhËt mÉu nµy vµo phÇn tö tiÕp theo trong tõ ®iÓn. NÕu tõ ®iÓn ®· ®Çy nã sÏ göi ra m·xo¸(Clear Code) vµ gäi ®Õn hµm InitDictionary() ®Ó khëi t¹o l¹i tõ ®iÓn. Hµm Code(): Tr¶ vÒ tõ m· øng víi mét chuçi. T tëng cña ®o¹n m· trªn cã thÓ hiÓu nh sau: NÕu cßn d÷ liÖu ®Çu vµo th×tiÕp tôc ®äc. Mét chuçi míi sÏ ®îc t¹o ra tõ chuçi cò(chuçi nµy ban ®Çu trèng, chuçinµy ph¶i lµ chuçi ®· tån t¹i trong tõ ®iÓn) vµ kÝ tù võa ®äc vµo. Sau ®ã kiÓm tra xemchuçi míi ®· cã trong tõ ®iÓn hay cha. Môc ®Ých cña c«ng viÖc nµy lµ hi väng t×m®îc chuçi cã sè kÝ tù lín nhÊt ®· tån t¹i trong tõ ®iÓn. NÕu tån t¹i ta l¹i tiÕp tôc ®äcmét kÝ tù tiÕp theo vµ lÆp l¹i c«ng viÖc. NÕu cha cã trong tõ ®iÓn, th× göi chuçi cò rangoµi vµ thªm chuçi míi vµo tõ ®iÓn. Cã thÓ xem l¹i phÇn vÝ dô ®Ó hiÓu râ h¬n. B¾t ®Çu InitDictionary() Output(Clear_Code) OldStr = NULL - Ouput(Code(OldStr)) INPUT OutPut(EOI) + NewChar = GetNextChar() NewStr = OldStr + NewChar KÕt 38 2 thócNhËp m«n xö lý ¶nh sè - §HBK Hµ néi Ch¬ng T¸m: nÐn d÷ liÖu ¶nh H×nh 8.3. S¬ ®å thuËt to¸n nÐn LZWGi¶i nÐn d÷ liÖu nÐn b»ng LZW Gi¶i thuËt gi¶i nÐn gÇn nh ngîc víi gi¶i thuËt nÐn . Víi gi¶i thuËt nÐn, mét tõm· øng víi mét chuçi sÏ ®îc ghi ra tÖp khi chuçi ghÐp bëi chuçi trªn víi kÝ tù võa®äc cha cã mÆt trong tõ ®iÓn. Ngêi ta còng cËp nhËt ngay vµo tõ ®iÓn tõ m· øng víichuçi t¹o bëi chuçi cò víi kÝ tù võa ®äc. KÝ tù nµy ®ång thêi lµ kÝ tù ®Çu tiªn trongchuçi øng víi tõ m· sÏ®îc ghi ra tiÕp theo. §©y lµ ®iÓm mÊu chèt cho phÐp x©y dùng thuËt to¸n gi¶i nÐn.ThuËt to¸n ®îc m« t¶ nh sau: while(GetNextCode() != EOI) do Begin if FIRST_CODE /* M· ®Çu tiªn cña mçi m¶nh ¶nh*/ Then Begin 239NhËp m«n xö lý ¶nh sè - §HBK Hµ néi Ch¬ng T¸m: nÐn d÷ liÖu ¶nh OutBuff(code); OldStr := code; End; If code = CC /* M· xo¸*/ Then Begin InitDictionary(); FIRST_CODE = TRUE; End; NewStr := DeCode(code); OutBuff(NewStr); OldString = OldStr + FirstChar(NewStr); AddtoDictionary(OldStr); OldString := NewStr; End; + Gi¸ trÞ cê FIRST_CODE = TRUE chØ m· võa ®äc lµ m· ®Çu tiªn cña mçim¶nh ¶nh. M· ®Çu tiªn cã c¸ch xö lÝ h¬i kh¸c so víi c¸c m· tiÕp theo. + M· CC b¸o hiÖu hÕt mét m¶nh ¶nh. M· EOI b¸o hiÖu hÕt toµn bé th«ng tin¶nh. +Chøc n¨ng cña c¸c hµm: GetNextCode() : Hµm nµy ®äc th«ng tin ®Çu vµo(d÷ liÖu nÐn) tr¶ vÒ m· t¬ng øng.Chóng ta nhí l¹i r»ng, d÷ liÖu nÐn gåm chuçi c¸c tõ m· nèi tiÕp nhau. Ban ®Çu lµ 9bit, sau ®ã t¨ng lªn 10 bit råi 11, 12 bit. NhiÖm vô cña hµm nµy kh«ng ph¶i ®¬n gi¶n.§Ó biÕt ®îc t¹i thêi ®iÓm hiÖn thêi, tõ m· dµi bao nhiªu bit ta ph¶i lu«n theo dâi tõ®iÓn vµ cËp nhËt ®é dµi tõ m· t¹i c¸c phÇn tö thø 512, 1024, 2048. OutBuff() Hµm nµy göi chuçi gi¸ trÞ ®· gi¶i m· ra vïng nhí ®Öm. DeCode() Hµm nµy tra cøu tõ ®iÓn vµ tr¶ vÒ chuçi kÝ tù t¬ng øng víi tõ m·. FirstChar() LÊy kÝ tù ®Çu tiªn cña mét chuçi. KÝ tù võa x¸c ®Þnh nèi tiÕp vµo chuçikÝ tù cò (®· gi¶i m· ë bíc tríc) ta ®îc chuçi kÝ tù cã mÆt trong tõ ®iÓn khi nÐn.Chuçi nµy sÏ ®îc thªm vµo tõ ®iÓn gi¶i nÐn. 240NhËp m«n xö lý ¶nh sè - §HBK Hµ néi Ch¬ng T¸m: nÐn d÷ liÖu ¶nh Hµm Output() : göi chuçi bit ra file. Chuçi bit nµy cã ®é dµi lµ 9,10,11 hoÆc 12 tuúthuéc vµo vÞ trÝ trong t ...
Tìm kiếm theo từ khóa liên quan:
kỹ thuật xử lý ảnh công nghệ xử lý ảnh phương pháp xử lý ảnh hướng dẫn xử lý ảnh kinh nghiệm xử lý ảnhTài liệu có liên quan:
-
Giáo trình Khai thác phần mềm ứng dụng
247 trang 115 0 0 -
65 trang 93 4 0
-
51 trang 86 0 0
-
21 trang 64 0 0
-
Ứng dụng phương pháp xử lý ảnh bằng Matlab để phân tích ảnh chuyển động của một vật thể
8 trang 56 0 0 -
393 trang 55 0 0
-
8 trang 52 0 0
-
Đồ án tốt nghiệp: Thiết kế, thi công bãi giữ xe ứng dụng công nghệ RFID và xử lý ảnh
85 trang 52 0 0 -
Đồ án tốt nghiệp: Robot vận chuyển mẫu xét nghiệm trong bệnh viện
117 trang 47 0 0 -
Xây dựng hệ thống nhận dạng lỗi tự động của tấm pin năng lượng mặt trời
3 trang 47 0 0