I là ma traơn
Boơ Giại NénFRC file
FRC file
Laịp i Laăn
I .1. Lược đoă giại mã .
Moơt RIFS được táo ra với giại thuaơt ở tređn bao goăm moơt danh sách các ánh xá affine , moêi ánh xá được chư định là cụa moơt range . Bởi vì moêi ánh xá là hoơi tú ở chieău đoơ chói ( nhađn tô tương phạn nhỏ hơn moơt ) , chúng ta có theơ ứng dúng định lý ánh xá hoơi tú ( Contractive Mapping theorem ) đeơ giại mã hình ạnh . Baĩt đaău từ moơt hình ạnh bât kỳ , người giại nén có theơ áp dúng laịp moơt RIFS , tiên trình này sẽ hoơi tú veă moơt đieơm cô định cụa RIFS . Nêu boơ nén tìm ra moơt RIFS tôt cho ạnh này thì nghĩa là nêu vieơc caĩt dán cụa tât cạ các domain đã được chuyeơn đoơi gaăn với hình ạnh ban đaău thì đieơm cô định cụa RIFS cũng gaăn với ạnh ban đaău này .
Đeơ thực hieơn vieơc laịp lái moơt RIFS , người giại nén lây danh sách các ánh xá affine và áp dúng nó cho moêi laăn cháy . Đieău này chuyeơn đoơi moơt taơp các domain sang moơt taơp các range . Bởi vì các range đã được chĩn là khođng choăng lâp và bao phụ toàn boơ ạnh nguoăn , kêt quạ là moơt ạnh mới hoàn chưnh hieơn ra . Người giại nén có theơ sau đó laịp lái toàn boơ quá trình cho đên khi sự hoơi tú được hoàn thành , nghĩa là cho đên khi có rât ít sự khác bieơt giữa hình ạnh vào và hình ạnh kêt quạ . Vieơc hoơi tú nói chung là đát được từ 6 – 10 laăn laịp .
Bađy giờ chúng ta có theơ hieơu rõ hơn là tái sao các ánh xá affine được chĩn là thu nhỏ trong cạ 2 chieău : đoơ chói và khođng gian . Vieơc thu nhỏ trong chieău đoơ chói là caăn thiêt đeơ chaĩc raỉng quá trình giại nén là hoơi tú . Thu nhỏ khođng gian là hữu ích đeơ táo ra sự chi tiêt trong hình ạnh tái bât kỳ mức nào , và vì thê ta có sự xâp xư tôt nhât với hình ạnh ban đaău . Khođng có hoơi tú khođng gian thì tiên trình văn hoơi tú nhưng nó sẽ hoơi tú thành moơt ạnh dáng khôi ( blocky ) , và khođng có bât kỳ đoơ tương phạn nào trong moêi khôi đó . Với thu nhỏ khođng gian , đoơ tương phạn sẽ xuât hieơn tređn tât cạ các range , khởi đaău bởi thành phaăn ánh sáng trong các ánh xá affine , được đưa vào trong moêi khôi range đeơ ngày càng ít đi sự khác bieơt sau moêi laăn laịp .
Chúng ta hãy quan sát hình “Lena” . Ở laăn laịp đaău tieđn , các chi tiêt đã daăn loơ ra . Đên laăn thứ hai thi chúng càng rõ hơn và đên laăn thứ 8 thì chúng ta đã có moơt ạnh hoàn chưnh , tương đương với hình ạnh ban đaău .
Hình 17 . Ạnh sau moơt , hai ,…,và tám laăn giại nén .
I.2 . Sự phú thuoơc đoơ phađn giại .
Đeơ khởi táo lái moơt hình ạnh , người giại nén baĩt đaău laịp với moơt hình ạnh tùy ý có cùng kích thước với hình ạnh ban đaău . Nhưng đieău gì sẽ xaơy ra nêu người giại nén baĩt đaău với moơt hình ạnh lớn gâp 2 laăn ạnh ban đaău ? Kêt quạ cụa quá trình giại nén cũng sẽ là moơt ạnh lớn gâp 2 laăn ạnh ban đaău . Tuy nhieđn , bởi vì các ánh xá affine được sử dúng đeơ mã hóa hình ạnh thì khođng phú thuoơc vào đoơ phađn giại cho neđn vieơc giại nén sẽ khođng bị khôi ( blocky ) , đieău này chúng ta sẽ đát được nêu chúng ta có bạn sao đơn giạn các đieơm ạnh cụa hình ạnh nguoăn . Nó văn có được sự chi tiêt tái bât kỳ mức nào .
Quan sát ạnh “Lena” được giại nén lớn hơn gâp 4 laăn và ạnh “Lena” được phóng to gâp 4 laăn . Ta thây ạnh được giại nén trođng chi tiêt hơn , rõ ràng hơn là ạnh được phóng to . Có sự khác bieơt như thê vì trong quá trình giại nén ạnh , moơt sô các chi tiêt giạ táo đã được đưa vào ạnh , làm cho ạnh trođng rõ ràng vàmịn màng hơn , đieău mà khi chúng ta khođng theơ có được khi phóng to ạnh .
Hình 18b . Ạnh Lena được phóng to gâp 4 laăn .
Hình ạnh thu được thođng qua vieơc giạn nén Fractal thì trođng tự nhieđn hơn . Quá trình giại nén sẽ táo ra những chi tiêt giạ táo , đieău mà khođng thây xuât hieơn trong hình ạnh gôc , nhưng chúng ta sẽ thaơt sự nhìn thây khi chúng được phóng to . Đađy là moơt đaịc tính hữu ích nhưng nó cũng có giới hán . Nêu chúng ta cô gaĩng phóng to quá lớn , chúng ta sẽ khođng thây được các mãnh nhỏ tređn beă maịt ạnh , nhưng hơn nữa là chúng ta sẽ thây được các chi tiêt giạ táo .
Tư leơ nén được đưa ra trước bởi chụ trương cụa nén Fractal có theơ nhỏ bé trong moơt vài trường hợp . Giạ sử raỉng moơt ạnh có kích thước 320x200 pixel , với kích thước ban đaău là 64KB , đã được nén với tư leơ nén là 32 : 1 . Kêt quạ sau khi nén là 2KB . Bađy giờ giại nén hình ạnh này với mức 4 ( scale factor = 4 ) . Nó sẽ táo ra moơt hình ạnh có kích thước là 1280x800 pixel , với kích thước sau khi giại nén là 64x16 = 1024 KB . Vì thê nó sẽ có tư leơ nén là 1024/2 = 512 : 1 , đieău này là sai . Lý do là hình ạnh được giại nén đã chứa các chi tiêt giạ táo , cái mà khođng có theơ hieơn ở hình ạnh gôc . Nhưng thođng tin gôc văn sẽ được nén với tư leơ 32 : 1 , phaăn còn lái cụa các thođng tin được táo ra moơt cách giạ táo bởi quá trình giại nén .
CHƯƠNG
V Thiêt Kê Chương Trình
Các Module chính .
Lưu đoă chương trình .
Lưu đoă khôi chức naíng .
I . Các module chính .
Chương trình được viêt baỉng ngođn ngữ Java , sử dúng các gói Javax.swing đeơ laơp trình giao dieơn . Bởi vì được viêt baỉng java cho neđn nó có khạ naíng tương thích rât cao đôi với các heơ đieău hành khác như Linux , Macintos , Lindow …Phaăn meăm bao goăm các chức naíng nén và giại nén file , thiêt laơp câu hình nén và giại nén thođng qua moơt file neăn và moơt form giao dieơn
. Phaăn meăm có khạ naíng nén moơt hoaịc nhieău file “ *.tga ” và giại nén nhieău file cùng lúc .
Chương trình goăm có 11 module chính ( thực hieơn quá trình nén và giại nén file ) và các module con ( cho phaăn giao dieơn ) bao goăm :
FCSubheader,FCHeader : là module lưu giữ các header cụa file đã được nén (*.FRC) bao goăm các thođng tin cho quá trình giại nén .
FCfile : đađy là lớp dùng đeơ đĩc và ghi thođng tin , lưu trữ các câu trúc dùng cho FRC file .
FCPixelpool : lớp lưu giữ các pixelpool , chuyeơn đoơi các thođng tin veă màu rgb thành các mãng dữ lieơu đeơ xử lý .
FCRange : Lưu các range sau khi đã được phađn chia và chuyeơn đoơi thành kieơu dữ lieơu mãng hai chieău .
FCDomain, DCDomainPool : Lưu giữ tât cạ các domain và các phương thức đeơ tìm ra moơt domain tôt nhât cho vieơc chuyeơn đoơi .
FCEncoder , FCEncoderInfo : Đađy là module chính cụa quá trình mã hóa file . FCEncoderInfo chứa các thođng tin , câu hình cho vieơc mã hóa và FCEncoder mã hóa các dữ lieơu và ghi vào file FRC .
FCDecoder , FCDecoderInfo : Hai module này cũng giông hai module tređn , bao goăm các thođng tin , câu hình và qui trình giại mã cho các file FRC .
Các module còn lái là các module dùng cho vieơc thiêt laơp các giao dieơn người dùng .
II.Lưu đoă chương trình.
CHƯƠNG
VI Thử Nghieơm So Sánh & Hướng Phát
Trieơn
Thử nghieơm .
So sánh với moơt vài phương thức mã hóa thođng dúng hieơn tái .
I . Thử nghieơm .
Thử nghieơm được thực hieơn tređn các ạnh ngău nhieđn , bao goăm ạnh Grayscale và ạnh màu RGB . Thử nghieơm sẽ nén các ạnh ở các mức ( chât lượng ) khác nhau và được giại nén ở cùng sô laăn . Sau đađy là bạng so sánh ạnh “sunset.tga”, kích thước ban đaău là 57KB , câu hình máy P4 1.7GHz . Ạnh được nén ở hai dáng là màu ở đoơ phađn giại 160x120x24b và grayscale là 160x120x8b . GrayScale Color Quality Image Compression Time (s) Ratio (%) Compression Time (s) Ratio (%) 1 0.3 99.601 0.5 99.55 2 0.5 99.6008 0.8 99.43 3 0.7 99.6077 1 99.44 4 1 99.37 3 98.67 5 2 99.32 7 98.37 6 3 99.23 14 97.04 7 5 99.2 40 95.99 8 7 99.04 60 93.98 9 20 98.85 90 91.54
Bạng 6 . Theơ hieơn thời gian nén và tư leơ nén .
Từ bạng tređn , ta thây với phương pháp nén ạnh phađn đốn thì ta luođn có moơt tư leơ nén tuyeơt vời . Nhưng bù lái , thời gian nén khá cao cũng là moơt nhượt đieơm cụa phương pháp này . Khi nén ạnh grayscale thì ta luođn có thời gian cùng tư leơ nén vượt troơi hơn so với khi nén ạnh màu . Đieău này được giại thích là : vì nén ạnh màu phại mã hóa 3 lớp màu cùng với nhieău thođng sô lưu trữ cho vieơc tái táo lái ạnh nhieău hơn là ạnh grayscale .
Theo như nhaơn xét thì nén ạnh với quality = 7 là đát được chât lượng ạnh rât tôt ( gaăn 96% so với hình ạnh gôc ) . Còn với các mức quality còn lái là khođng caăn thiêt . Với các mức quality thâp hơn , ta sẽ thây hình ạnh rât teơ , hay bị “blocky” ở moơt vài vùng . Còn với các mức quality cao hơn thì có rât ít sự khác bieơt , với maĩt thường thì ta khó lòng phađn bieơt được .
II. So sánh với moơt vài phương thức mã hóa thođng dúng hieơn tái .
Ở đađy , ta sẽ so sánh với hai phương thức nén ạnh phoơ biên nhât , đó là file GIF và JPG . Vieơc so sánh được thực hieơn tređn ba file ạnh ngău nhieđn khác nhau là sunset.tga , lena.tga và water.tga . Ba file đeău có cùng đoơ phađn giại 160x120x24b và kích thước 57KB . Máy có câu hình P4 1.7 , 256MB RAM .
1.Thời gian nén . 0 20 40 60 80 100
Sunset Lena Flow er
GIFJPG JPG FRC 0 20 40 60 80 100
Sunset Lena Flow er
GIFJPG JPG FRC
Ạnh màu . Ạnh GrayScale .
2.Thời gian giại nén .
0 20 40 60 80 100
Sunset Lena Flow er
GIFJPG JPG FRC Ạnh màu . Ạnh GrayScale 0 20 40 60 80 100
Sunset Lena Flow er
GIFJPG JPG FRC
3.Tư sô nén . 0 20 40 60 80 100
Sunset Lena Flow er
GIFJPG JPG FRC 0 20 40 60 80 100
Sunset Lena Flow er
GIFJPG JPG FRC
Ạnh màu . Ạnh GrayScale .
Qua ba bieơu đoă so sánh tređn ta thây raỉng nén Fractal rât lợi đieơm veă tư sô nén . Trong moơt vài trường hợp ( nhât là đôi với ạnh GrayScale ) , ta có theơ đát được tư sô nén gaăn như tuyeơt đôi ( 98% ) . Còn với file JPG và GIF thì khođng theơ vượt qua được tư leơ ngưỡng (93%) . Đađy là moơt sự hữu ích cụa Fractal .
Ngược lái veă tư sô nén thì nén Fractal văn còn khá chaơm so với hai phương thức tređn trong quá trình nén ạnh màu , và tương đôi so với ạnh GrayScale . Nén JPEG dùng cơ chê chuyeơn đoơi DCT ( Discrete Cosin Transform ) dựa tređn neăn tạng các biên đoơi Fourier neđn cho tôc đoơ khá nhanh ( tham khạo theđm ở sách “Data Compression Book” cụa Mark Nelson và Jean- Loup Gailly) . Nén GIF thì dùng giại thuaơt nén LZW với vieơc chuyeơn đoơi moơt dãy các giá trị pixel thành giá trị sô đeơ lưu trữ . Phương pháp này cho ta tôc đoơ rât nhanh ( tham khạo theđm trong GIF Format có rât nhieău tređn net ) .
So sánh veă tôc đoơ giại nén thì các giại thuaơt có tôc đoơ ngang nhau . Fractal chư chaơm hơn moơt ích với ạnh màu và tương đương với ạnh GrayScale .
Nói veă chât lượng ạnh thì hình ạnh được tái táo lái với Fractal thì rât tôt , sánh ngang với JPG file và cũng khođng thua gì GIF file .
Ngoài vieơc đát được tư sô nén cao , Fractal còn rât có lợi trong vieơc phóng to hay thu nhỏ ạnh . Với các phương pháp nén khác thì ta khođng theơ phóng to ạnh ngoài vieơc trợ giúp cụa các phaăn meăm xem ạnh phoơ biên . Theđm vào đó , ạnh khi được phóng to sẽ bị “blocky” , có nghĩa là các chi tiêt ạnh sẽ
có dáng khôi vuođng , hình ạnh khođng còn mịn màng như lúc ban đaău . Ngược lái ,Fractal khođng những có khạ naíng phóng to được ạnh còn táo cho ạnh đoơ tự nhieđn , mịn màng rât tôt . Đađy là moơt thê mánh cụa phương pháp nén ạnh Fractal .
III.Ưu khuyêt đieơm và phương hướng phát trieơn .
Chương trình được viêt baỉng ngođn ngữ java neđn có tính phoơ biên roơng rãi . Giao dieơn thađn thieơn người dùng và deơ dàng sử dúng . Các file được nén có tư sô nén rât cao , phù hợp với khạ naíng lưu trữ hữu hán cụa phaăn cứng . Ngoài ra chât lượng nén cũng rât tôt , có theơ deơ dàng phóng to thu nhỏ ạnh mà khođng làm mât đi sự tự nhieđn vôn có cụa ạnh . Giao dieơn chương trình được viêt cho vieơc tích hợp theđm các giại thuaơt nén khác moơt cách deê dàng nhât .
Maịc dù đã rât cô gaĩng nhưng chương trình ngoài những ưu đieơm đát được văn chưa được hoàn chưnh và còn nhieău khuyêt đieơm . Khuyêt đieơm lớn nhât cụa chương trình là tôc đoơ thực thi còn khá chaơm và đađy là moơt đieău thaơt sự caăn được cại tiên trong tương lai . Vì giại thuaơt được thực hieơn chụ yêu là tređn các ma traơn neđn vieơc cại tiên tôc đoơ có hai khạ naíng .
Phađn lối domain vào các lớp domain , từ đó , các range chư phại so sánh với các domain thuoơc cùng lớp với mình , giạm đi được rât nhieău thời gian so sánh .
Tinh chưnh đeơ taíng tôc các vòng laịp cùng với vieơc dùng ngođn ngữ khác có hoơ trợ mánh cho vieơc tính toán ma traơn như là ngođn ngữ Matlab .
Cùng với vieơc taíng tôc chương trình thì vieơc cại tiên phaăn meăm cũng rât đáng được quan tađm . Hieơn nay , chương trình chư mới hoơ trợ cho file *.tga . Trong tương lai sẽ hoơ trợ theđm cho các file *.bmp , *.raw …Cùng với vieơc taíng theđm các chức naíng cho phaăn meăm như táo gói , view inside hoaịc outside …Cuôi cùng là tích hợp với các giại thuaơt nén vaín bạn và ađm thanh khác đeơ táo thành moơt chương trình nén hoàn chưnh .
CHƯƠNG
Trong quá trình tìm hieơu kỹ thuaơt nén ạnh baỉng phương pháp phađn đốn , cơ bạn đoă án đã tìm hieơu được kỹ thuaơt nén ạnh nói chung và kỹ thuaơt nén phađn đốn nói rieđng . Đoă án cũng đã thực hieơn được gaăn đaăy đụ các yeđu caău đaịt ra như nén , giại nén ạnh , câu hình nén cùng với giao dieơn được viêt mở roơng cho vieơc tích hợp các kỹ thuaơt nén khác .
Với vieơc tìm hieơu quá trình phađn đốn , sử dúng hàm ( chuyeơn đoơi affine ) đeơ mã hóa (ạnh Grayscale lăn ạnh màu ) , lượng tử hóa thođng tin cho thây hieơu suât nén phú thuoơc như thê nào vào các quá trình này . Đoă án cũng so sánh được các ưu đieơm vượt troơi so với các phương pháp nén khác đang có maịt tređn thị trường .
Tuy nhieđn , phương pháp nén nào cũng toăn tái các ưu khuyêt đieơm cụa nó và còn tùy thuoơc vào kieơu file caăn nén , múc đích cụa vieơc nén . Quá trình thực nghieơm đã cho thây nén Fractal có hieơu suât nén vượt troơi hẳn các phương pháp nén khác . Tuy nhieđn , nó tỏ ra khá chaơm vì phại thực hieơn vieơc so sánh giữa các range và domain cùng với các biên đoơi khá phức táp .