1. Trang chủ
  2. » Luận Văn - Báo Cáo

DCT trong nén ảnh sử dụng phần mềm MATLAB

78 590 7

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 78
Dung lượng 2,69 MB
File đính kèm DCT.rar (163 KB)

Nội dung

DCT trong nén ảnh sử dụng phần mềm MATLAB có đầy đủ code nén ảnh và giải nén ảnh, giải thích rõ ràng từng hàng code. Giao diện nén ảnh DCT có đầy đủ kích thước gốc, kích thước sau khi giải nén, tỷ lệ nén, thời gian nén, MSE, PSNR, hệ số DCT muốn chọn.

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP HỒ CHÍ MINH

KHOA CÔNG NGHỆ ĐIỆN TỬ

Chuyên ngành : Điện Tử Viễn Thông

Hệ đào tạo : Chính Quy Khóa đào tạo : 2015 - 2019.

TP Hồ Chí Minh, tháng 06 năm 2019

BỘ CÔNG THƯƠNG CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐH CÔNG NGHIỆP Độc lập – Tự do – Hạnh phúc

Trang 2

KHOA CÔNG NGHỆ ĐIỆN TỬ NHIỆM VỤ BÁO CÁO TỐT NGHIỆP

Họ và tên sinh viên :

Chuyên ngành: Điện Tử Viễn Thông

Hệ đào tạo: Chính Quy

Niên Khóa: 2015 - 2019

Tên đề tài:

DCT TRONG NÉN ẢNH SỬ DỤNG

PHẦN MỀM MATLAB

I Giáo viên hướng dẫn :

II.Ngày giao nhiệm vụ :

III Ngày hoàn thành nhiệm vụ :

Trang 3

Chúng em xin gửi lời cảm ơn đến thầy cô Khoa Công nghệ Điện tử và Bộ môn Điện tửViễn thông đã giúp đỡ cũng như cung cấp những kiến thức sâu rộng để chúng em có nềntảng kiến thức để nghiên cứu đề tài Đặc biệt chúng em xin chân thành cảm ơn thầy Th.s Mạc Đức Dũng, người đã tận tình hướng dẫn nghiên cứu đề tài này.

Các bạn sinh viên và tập thể lớp đã có những giúp đỡ thiết thực, cung cấp các tài liệu liênquan cũng như động viên trong quá trình thực hiện đề tài

Và xin chân thành gửi lời cảm ơn sâu sắc đến gia đình và người thân đã hỗ trợ tất cả mọiđiều kiện để đề tài được hoàn thành tốt đẹp

Trong quá trình thực hiện đề tài và quá trình làm báo cáo thực tập của chúng em khôngthể không tránh khỏi các thiếu sót Kính mong các thầy cô thông cảm và chân thành góp

ý kiến giúp chúng em có kiến thức vững vàng hơn để làm hành trang thật tốt sau khi ratrường

Chúng em xin chân thành cảm ơn !

TP Hồ Chí Minh, Ngày… tháng …năm …

MỤC LỤC

Trang 4

DANH MỤC HÌNH ẢNH

DANH MỤC BẢNG VÀ BIỂU MẪU

Trang 5

MỘT SỐ KÝ HIỆU VÀ CHỮ VIẾT TẮT

DCT Discrete Cosine Transform

JPEG Joint Photographic Experts Group

Matlab Matrix Laboratory

GUI Graphic User Interface

RLE Run-length encoding

DWT Discrete Wavelet Transform

PKZIP Phil Katz ZIP

LHA A compression program developed by Haruyasu YoshizakiARJ Archived by Robert Jung

RAM Random Access Memory

RGB Red Green Blue

YUV A color model: Y is the luminance (brightness)

U and V are the chrominance (color) components

NTSC National Television System Committee

PNG Portable Network Graphic

MSE Mean Squared Error

PSNR Peak Signal-To-Noise Ratio

GIF Graphics Interchange Format

Trang 6

LỜI NÓI ĐẦU

Thời đại công nghệ 4.0 đã mang đến những sự thay đổi về mặt kinh tế, kỹ thuật, …Nghành điện tử đã và đang có những bước phát triển vượt bậc Các sản phẩm công nghệđang được phát triển rất nhanh với tốc độ chóng mặt và công nghệ truyền thông cũngkhông ngoại lệ

Nhu cầu chụp ảnh, quay video, để lưu lại các khoảnh khắc đặc biệt là điều thiết yếu trongcuộc sống Những tấm hình, những đoạn băng đã được số hóa để có thể được lưu nhiềuhơn và chia sẻ nhanh hơn Qua đó đã thúc đẩy được sự phát triển của các phần mềm liênquan đến vấn đề về xử lí hình ảnh và video Nén ảnh là một kỹ thuật mã hóa các ảnh sốnhằm giảm số lượng bit dữ liệu bằng cách loại bỏ các thông tin dư thừa trong ảnh như dưthừa về thông tin, không gian, cấp xám hay về thời gian Mục đích là giảm đi những chiphí trong việc lưu trữ ảnh và chi phí thời gian để truyền bức ảnh đi xa trong truyền thôngnhưng vẫn đảm bảo được chất lượng yêu cầu

Theo đó, Matlab là một ngôn ngữ lập trình bậc cao được sử dụng để giải các bài toán về

kỹ thuật Matlab được tích hợp sẵn các toolbox cũng như thư viện để thực hiện tính toán,thể hiện kết quả, cho phép lập trình, giao diện làm việc rất dễ dàng cho người sửdụng.Với phần mềm đồ họa cực mạnh cho phép mô phỏng các mô hình thực tế và lậptrình các ứng dụng

Xuất phát từ nhu cầu thực tế và xu hướng nghiên cứu của thế giới, chúng tôi thực hiện đềtài “DCT trong nén ảnh sử dụng phần mềm Matlab”

Trang 7

TÓM TẮT

Nén ảnh là một trong những đề tài nghiên cứu thông dụng nhất hiện nay, dùng trong rấtnhiều ứng dụng và trở thành phần không thể thiếu trong cuộc sống hiện đại, từ các ứngdụng điện thoại, đến chương trình chuyên môn Việc chuyển định dạng thông tin sử dụng

ít bit hơn cách thể hiện ở dữ liệu gốc, xác định các thông tin không cần thiết và loại bỏchúng, cần thiết vì giảm được nguồn tài nguyên cũng như dung lượng lưu trữ hay băngthông đường truyền

Vậy nên đề tài chia làm 5 chương:

Chương 1: Tổng quan về đề tài

Nêu lên mục tiêu, nhiệm vụ nghiên cứu và phương pháp nghiên cứu đề tài

Chương 2: Cơ sở lý thuyết

Sơ lược về xử lý ảnh, nén ảnh jpeg, lý thuyết về mã DCT trong nén ảnh, ứng dụng Matlab

cơ bản và hướng dẫn sử dụng Guide trong Matlab

Chương 3: Thiết kế và lập trình

Trình bày giao diện và code nén ảnh DCT và giải thích code

Chương 4: Kết quả thực nghiệm

Trình bày kết quả đạt được, hình ảnh gốc và hình ảnh đã nén dùng phương pháp DCT vàbảng so sánh hệ số DCT

Chương 5: Kết luận

Kết luận và hướng phát triển đề tài

Trang 8

CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI

1.1 Lý do chọn đề tài

Nén ảnh là một trong những đề tài nghiên cứu thông dụng nhất hiện nay, dùng trong rấtnhiều ứng dụng và trở thành phần không thể thiếu trong cuộc sống hiện đại, từ các ứngdụng điện thoại, đến chương trình chuyên môn Việc chuyển định dạng thông tin sử dụng

ít bit hơn cách thể hiện ở dữ liệu gốc, xác định các thông tin không cần thiết và loại bỏchúng, cần thiết vì giảm được nguồn tài nguyên cũng như dung lượng lưu trữ hay băngthông đường truyền

Trong thời hiện đại, mỗi người có nhu cầu lưu trữ hình ảnh nhiều hơn, vậy nên phươngpháp nén ảnh DCT sẽ giúp người dùng lưu trữ được nhiều hình ảnh mà không cần phảitốn quá nhiều dung lượng bộ nhớ trên thiết bị, lưu lại chất lượng hình ảnh tốt nhất

1.2 Mục tiêu nhiệm vụ nghiên cứu

1.2.1 Nhiệm vụ

- Đưa ra cơ sở lý thuyết

- Tiến hành nghiên cứu thuật toán của các loại mã DCT

- Đưa ra nguyên tắc mã hóa và bài toán mã hóa

- Thiết kế giao diện và chạy thử

- Đánh giá ưu điểm và nhược điểm của phương pháp

- Nghiên cứu và phát triển thuật toán tối ưu nhất

- Nắm được kiến thức cơ bản của phương pháp nén ảnh từ đó thiết kế và lập trình ragiao diện nén ảnh bằng mã DCT trên giao diện GUI trong Matlab

1.2.2 Mục tiêu

- Vận dụng kiến thức đã học để lập trình code nén ảnh bằng mã DCT

- Thiết kế giao diện nén ảnh như yêu cầu của đề tài

- Thiết kế giao diện trên Matlab đẹp và dễ sử dụng

1.3 Phương pháp nghiên cứu

Các phương pháp nghiên cứu chính:

- Phương pháp phân tích và tổng hợp lý thuyết

- Phương pháp phân tích loại hệ thống hóa lý thuyết

- Phương pháp thực nghiệm: từ những cơ sở lý thuyết, xây dựng chương trình vàkiểm nghiệm một cách thực tế nhất

Trang 9

1.4 Kế hoạch nghiên cứu

thiết kế và lý thuyết liên

quan đến đề tài: Lý thuyết

Có nguồn tài liệu tham khảo đển viết báo cáo

Các nguồn thu thập:-Sách-Các diễn đànđiện tử, code,…-Website

2 Tìm hiểu tài liệu về giao diện GUIDE trong Matlab Hiểu và thành thạo cơ bản về Matlab

3 Xử lý tài liệu đã thu thập

Phân tích, tổng hợp và phân loại khái quát các tài liệu đã thu thập được

Thực hiện nghiên cứu sơ

đồ giải thuật của mã DCT

và nghiên cứu các tạo giao diện Guide sử dụng phần mềm Matlab

6 Cân chỉnh giao diện và code

Tạo ra giao diện đẹp, gọngàng và dễ sử dụng

7 Viết báo cáo

Trang 10

CHƯƠNG 2: CƠ SỞ LÝ THUYẾT

2.1 Sơ lược về nén ảnh

2.1.1 Tổng quan về nén ảnh jpeg

JPEG ( Joint Photographic Experts Group) là một phương pháp nén ảnh hiệu quả, chophép làm việc với ảnh có nhiều màu và kích cỡ lớn, tỷ lệ nén ảnh đạt mức so sánh tới vàichục lần

Phương pháp nén ảnh theo chuẩn JPEG có thể cho hệ số nén tới 80:1 hay lớn hơn, nhưngphải chịu mất thông tin (ảnh sau khi giải nén khác với ảnh ban đầu), lượng thông tin mấtmát tăng dần theo hệ số nén JPEG tiến hành sửa đổi thông tin ảnh khi nén sao cho ảnhmới gần giống như ảnh cũ

Có nhiều cách để nén ảnh, dựa vào yếu tố bảo toàn thông tin có thể chia thành 2 phươngpháp nén ảnh tĩnh:

Trang 11

- Nén ảnh không tổn hao( Lossless compression) : Ảnh khôi phục giống hoàn toàn

so với ảnh gốc Tuy nhiên nếu không tổn hao chỉ đạt được hiệu quả nén rất nhỏ.Sửdụng các phương pháp mã hóa dữ liệu

- Nén ảnh có tổn hao( Lossy compression): Có thể đạt được hiệu quả nén cao hơnrất nhiều mà ở điều kiện bằng mắt thường không cảm nhận được và vì vậy nên vẫnđảm bảo chất lượng ảnh Kiểu nén này luôn có sự mất mát thông tin vì phươngpháp này đã loại bỏ những thông tin dư thừa không cần thiết Phương pháp nénảnh dựa trên phép biến đổi ảnh

Các phương pháp mã hóa dữ liệu:

- Mã hàng loạt( RLE): Dùng số đếm để thay thế các đặc điểm giống nhau lặp lại

- Mã Shannon-Fano: Dùng các cụm bit có độ dài thay đổi để mã hóa

- Mã Huffman: Sử dụng các đặc điểm mã hóa của Shannon-Fano với ý tưởng kíhiệu có khả năng xuất hiệu nhiều có từ mã ngắn

- Mã Lemple-Ziv: Dựa trên việc xây dựng và tra từ điển

- Mã dự đoán: Dựa trên quá trình tạo điểm tuần tự và luật dự đoán

Các phép biến đổ áp dụng trong nén ảnh:

- Phép biến đổi Cosin rời rạc( DCT): Biểu diễn các giá trị điểm ảnh trên miền tần

số, tập trung năng lượng vào một số hệ số DCT sử dụng trong các chuẩn JPEG vàMPEG

- Phép biến đổi Wavelet rời rạc(DWT): sử dụng các bộ lọc thông dài xử lý phân tích

đa phân trong phép DWT

- Phép biến đổi Fractal: Sử dụng các phép biến đổi hình học [1]

2.1.1.1 Mục đích của việc nén tín hiệu

Nén tín hiệu có hai mục đích chính:

- Giảm dung lượng lưu trữ

- Giảm băng thông (bandwidth) truyền dẫn

2.1.1.2 Bản chất của việc nén tín hiệu

Thông tin của một tín hiệu gồm hai phần:

- Phần lượng tin (entropy), hay độ bất định (uncertainty)

- Phần dư thừa (redundancy): Thông tin không phù hợp (irrelenvancy), thông tin cốtlõi của entropy

2.1.2 Các kỹ thuật nén ảnh

2.1.2.1 Các nguyên tắc của nén ảnh

Trang 12

Một số tính chất chung nhất của tất cả các ảnh số đó là tương quan giữa các pixel ở cạnhnhau lớn, điều này dẫn đến dư thừa thông tin để biểu diễn ảnh Dư thừa thông tin sẽ làmcho việc mã hóa không tối ưu Do đó công việc cần làm để nén ảnh là phải tìm được cácbiểu diễn ảnh với tương quan nhỏ nhất để giảm thiểu độ dư thừa thông tin của ảnh

Có hai kiểu dư thừa thông tin được phân loại như sau:

- Dư thừa trong miền không gian: tương quan giữa các giá trị pixel của ảnh, điềunày có nghĩa rằng các pixel lân cận của ảnh có giá trị gần giống nhau (trừ nhữngpixel ở giáp đường biên ảnh)

- Dư thừa trong miền tần số: tương quan giữa các mặt phẳng màu hoặc dải phổ khácnhau

Trọng tâm của các nghiên cứu về nén ảnh là tìm cách giảm số bit cần để biểu diễn ảnhbằng việc loại bỏ dư thừa trong miền không gian và miền tần số càng nhiều càng tốt [2]

2.1.2.2 Tốc độ và tỉ lệ nén

Ngay cả khi tất cả các chương trình nén file đều dùng chung một thuật toán thì hoạt độngcủa chúng cũng khác nhau Mỗi hãng sẽ triển khai thuật toán một kiểu để dung hòa haivấn đề sau: thời gian và tỷ lệ nén Chương trình PKZIP thường trội hơn các chương trìnhnén khác về mặt tốc độ, mặt tỷ lệ nén, nhiều khi nó cũng khá hơn Tính ổn định của cácchương trình nén cũng là điều cần quan tâm Các file nén nói chung rất ít khi bị hỏng.Lưu ý các loại file nén không tương thích với nhau, tức là nếu gửi file nén cho ngườikhác thì người đó cần phải có chương trình thích hợp mới giải nén ra được Tuy nhiên đểgiải quyết vấn đề này, cả 3 chương trình ARC + PLUS, LHA và PKZIP đều cho phép tạofile nén tự bung, file nén ở dạng chương trình thực hiện, khi chạy sẽ tự động bung ra, trênthị trường cũng bắt đầu xuất hiện chương trình chuyển đổi từ dạng file nén này sang dạngfile nén khác (ví dụ chương trình D'Compress for Windows chuyển các file PKZIP, ARC,LHA sang dạng ARJ)

Các chương trình nén giá không cao (PKZIP: 47USD, LHA miễn phí) nên được dùngrộng rãi Hạn chế hiện nay của chúng là giao diện người dùng không thuận tiện, thườngphải gõ lệnh với nhiều tham số ở dấu nhắc của DOS để thực hiện một công việc nào đó.Cải tiến theo hướng này đang được thực hiện: ARC + PLUS có giao diện kiểu menu,PKZIP cũng đã có phần bổ sung là PKZIP menu

Thư mục nén rời sau đó lại phải bung ra để dùng của các chương trình nén file khá rườm

rà, vì lý do này mà các chương trình nén đĩa như Stacker hoặc Super Store được sử dụng

Trang 13

nén file, khác biệt là chúng tự động nén và bung mà người dùng không phải quan tâmđến Thời gian và tỷ lệ nén của các chương trình nén loại này khác nhau Để bung 3,5 Mb

dữ liệu, chương trình này hết 12 giây, chương trình khác 40 giây Tỷ số nén đối với filevăn bản cũng khác: từ 2:1 đến 3:1 Tóm lại khi dùng chương trình nén đĩa, người dùngyên tâm là dung lượng trống của ổ cứng tăng khoảng 2 lần

Việc bung và nén khi làm việc với file sẽ làm công việc chậm lại một chút Đối với cácfile dữ liệu lớn, điều này thể hiện khá rõ Khi chạy, các chương trình nén đĩa hoạt động ởdạng thường trú, bởi thế một mặt nó chiếm dụng bộ nhớ RAM, một mặt có thể gây xungđột với các chương trình thường trú khác Các chương trình nén file khi có sự cố hỏngmột vài file, còn chương trình nén đĩa làm hỏng cả ổ đĩa Tuy nhiên điều này rất ít khixảy ra nhưng nó cũng làm cho nhiều người e ngại không dám sử dụng

Để cài đặt chương trình nén đĩa cần phân chia lại ổ cứng vì máy tính cần được khởi độngbằng đĩa nén trước khi chương trình nén hoạt động Nếu sử dụng Windows thì phầnkhông nén cần khá lớn (thông thường cần dành 10 Mb cho vùng không nén, chỉ nén vùngđĩa còn lại)

Một điều có thể làm người dùng đau đầu là phải quyết định tỷ lệ nén là bao nhiêu Với tỷ

lệ nén 10:1 chẳng hạn, chương trình nén sẽ dành nhiều "con trỏ" để trỏ đến các dữ liệu,mỗi con trỏ chiếm 2 byte, khi đó dễ xảy ra trường hợp không đủ con trỏ, chương trìnhbáo đĩa đầy mà thực ra không phải như vậy

Cuối cùng, việc loại bỏ chương trình nén đĩa khi đã cài đặt cũng là một vấn đề hơi phiềntoái Nhiều chương trình - chẳng hạn Double Density có chức năng loại bỏ Đối với cácchương trình khác cần tóm các file ẩn của chương trình nén và xóa bỏ chúng đi Có khiphải format lại ổ cứng

Tóm lại, dù một số hạn chế, nén dữ liệu là cách thức kinh tế nhất để mở rộng dung lượng

ổ cứng Ngoài ra còn tiết kiệm được khá nhiều thời gian và kinh phí khi nén dữ liệu trướckhi truyền đi

Tỷ lệ nén là một trong các đặc trưng quan trọng nhất của mọi phương pháp nén Tuynhiên, về cách đánh giá và các kết quả công bố trong các tài liệu cũng cần được quan tầmxem xét Nhìn chung, người ta định nghĩa tỷ lệ nén như sau :

Tỷ lệ nén : t = x %

Với r là tỷ số nén được định nghĩa : r = kích thước dữ liệu gốc / kích thước dữ liệu thuđược sau nén Như vậy hiệu suất của nén là: h = ( 1 - tỷ lệ nén) x %

Trang 14

Trong các trình bày sau khi nói đến kết quả nén, chúng ta dùng tỷ số nén, thí dụ như 10trên 1 có nghĩa là dữ liệu gốc là 10 sau khi nén chỉ có 1 phần.

Tuy nhiên, cũng phải thấy rằng những số đo của một phương pháp nén chỉ có giá trị vớichính sự nén đó, vì rằng hiệu quả của nén còn phụ thuộc vào kiểu dữ liệu định nén nhiềukhi tỷ lệ nén cao cũng chưa thể nói rằng phương pháp đó là hiệu quả hơn các phươngpháp khác, vì còn các chi phí khác như thời gian, không gian và thậm chí cả độ phức tạptính toán nữa Thí dụ như nén phục vị trong truyền dữ liệu : vấn đề đặt ra là hiệu quả nén

có tương hợp với đường truyền không [3]

2.1.2.3 Ưu nhược điểm của phương pháp nén ảnh JPEG

a Ưu điểm:

JPEG cho phép nén ảnh với tỉ số nén lên đến 80:1 hoặc cao hơn, hiển thị các hình ảnhđầy đủ màu hơn (full-colour) cho định dạng di động mà kích thước file lại nhỏ hơn JPEGcũng được sử dụng rất nhiều trên Web Lợi ích chính của chúng là chúng có thể hiển thịcác hình ảnh với màu chính xác true-colour (chúng có thể lên đến 16 triệu màu), điều đócho phép chúng được sử dụng tốt nhất cho các hình ảnh chụp và hình ảnh minh họa có sốlượng màu lớn

Các ảnh JPEG không thể làm trong suốt hoặc chuyển động - trong trường hợp này bạn sẽ

sử dụng định dạng GIF (hoặc định dạng PNG để tạo trong suốt)

2.1.2.4 Độ dư thừa (redundancy)

a) Entropy của nguồn tin

Độ dư thừa các pixel/ ảnh (hay nhiều ảnh liên tiếp) có độ tương quan cao với nhau – Độ

dư thừa giữa các pixels:

Trang 15

- Độ dư thừa giữa các pixels trong các frame liên tiếp: Dư thừa thời gian (temporalredundancy), hoặc độ dư thừa giữa các frame (interframe redundancy).

b) Độ dư thừa giữa các pixels (ảnh tĩnh)

- Bỏ bớt các thông tin về màu so với thông tin chói (mắt người nhạy cảm với thôngtin chói hơn)

- Bỏ bớt các thành phần tần số không gian quá cao (nằm ngoài vùng nhìn thấy củamắt)

- Giảm độ phân giải không gian của ảnh

- Cắt bớt ảnh

- Bỏ bớt các thông tin ít quan trọng (số lượng màu biểu diễn ảnh (ảnh màu 24 bit có16,7 triệu màu, ảnh màu 15bit, ảnh màu 8bit có 256 màu), ảnh đen trắng, ảnh nhịphân): Giảm độ phân giải màu và chói

- Bỏ bớt độ dư thừa không gian (spatial redundancy): các pixels lân cận trong khônggian có độ tương quan cao

- Độ dư thừa phổ (spectral redundancy): Các thành phần màu (biểu diễn từng pixel)

có độ tương quan cao

- Độ dư thừa thống kê (statistical redundancy) các ký hiệu (symbol) xuất hiện trongdòng bit với xác suất xuất hiện không đồng đều

- Độ dư thừa tâm lý thị giác (psychovisual redundancy): Các thông tin không phùhợp với thị giác Giảm thành phần tần số không gian cao (giảm độ nét)

- Giảm độ phân giải không gian (giảm số lượng pixels trên ảnh => giảm kích thướcảnh)

- Giảm bớt độ phân giải màu: giảm số bit biểu diễn màu (giảm số thành phần màubiểu diễn 1 pixel => màu sắc kém trung thực)

c) Nén số tạo ra sái dạng nhân tạo (artifact)

- Tạo hiệu ứng khối (các ô lưới vuông trên ảnh)

- Tạo đường xiên răng cưa

- Tạo nhiễu

- Tạo lệch vị trí giáp nối các phần ảnh trong 1 ảnh (do có các chuyển động nhanhcủa các đối tượng)

d) Nén video phụ thuộc vào nội dung:

- Nén video tốc độ bit không đổi: Chất lượng không đổi theo nội dung

- Nén video chất lượng thay đổi: Tốc độ bit thay đổi theo nội dụng

2.2 Mã DCT

2.2.1 Giới thiệu thuật toán DCT

DCT (biến đổi cosine rời rạc) chủ yếu được sử dụng cho hình ảnh nén từ nhiều năm qua.Lựa chọn làm tiêu chuẩn cho JPEG là đáng kể vào lý do phổ biến cho sự phổ biến DCT

có thể thực hiện trong một số ứng dụng không phân tích như tín hiệu xử lý & xử lý hìnhảnh các ứng dụng DSP như video hội nghị DCT có thể được sử dụng trong chuyển đổi

Trang 16

dữ liệu nén DCT là một biến đổi thực tế có một bộ cơ bản cố định chức năng DCT được

sử dụng để ánh xạ không gian hình ảnh theo tần số [10]

Vì ảnh gốc có kích thước rất lớn cho nên trước khi đưa vào biến đổi DCT, ảnh được phânchia thành các khối vuông, mỗi khối này thường có kích thước 8 x 8 pixel và biểu diễncác mức xám của 64 điểm ảnh, các mức xám này là các số nguyên dương có giá trị từ 0đến 255 Việc phân khối này sẽ làm giảm được một phần thời gian tính toán các hệ sốchung, mặt khác biến đổi cosin đối với các khối nhỏ sẽ làm tăng độ chính xác khi tínhtoán với dấu phẩy tĩnh, giảm thiểu sai số do làm tròn sinh ra

Biến đổi DCT là một công đoạn chính trong các phương pháp nén sử dụng biến đổi.Công thức dưới đây minh họa cho hai phép biến đổi DCT thuận nghịch đối với mỗi khốiảnh có kích thước 8 x 8 Giá trị x(n1,n2) biểu diễn các mức xám của ảnh trong miền khônggian, K(k1,k2) là các hệ số sau biến đổi DCT trong miền tần số

Công thức (1)

Công thức (2)Với và

Entropy của thông điệp S:

Với là xác suất xuất hiện của ký hiệu Si trong S

2.2.2 Giải thuật DCT

Trang 17

Sơ đồ 2.1 Sơ đồ nén ảnh DCT

- Phân tích sơ đồ nén ảnh DCT:

o Đầu tiên phân ảnh ra các khối 8x8

o Biến đổi DCT: là khối biến đổi cosin rời rạc, biến đổi thông tin ảnh từ miềnkhông gian sang miền tần số

o Lượng tử hóa: là quá trình làm giảm số lượng bit cần để lưu trữ các hệ số(quá trình mất mát thông tin)

o Mã hóa: quá trình này sẽ tách biệt việc xử lý hai thành phần DC các hệ sốmột chiều đặc trưng cho phần lớn tín hiệu của ảnh và thành phần AC các hệ

số xoay chiều đặc trưng cho các thông tin chi tiết của ảnh

o Bảng lượng tử hóa: là ma trận 8x8 được sử dụng cho việc biến đổi dữ liệu

từ số thực sang số nguyên

o Bảng mã hóa: là luật mã hóa các dữ liệu số nguyên sau lượng tử hóa thànhcác từ mã [9]

Sơ đồ 2.2 Sơ đồ giải nén

- Quá trình giải nén ngược lại với quá trình nén ảnh

Phương pháp nén ảnh JPEG dựa trên nguyên lý sau: ảnh màu trong không gian của 3 màuRGB (red Green Blue) được biến đổi về hệ YUV (hay YCBCr) (điều này không phải lànhất thiết, nhưng nếu thực hiện thì cho kết quả nén cao hơn) theo công thức :

YUV = 0.615R − 0.515G − 0.100B

Y= 0.299R + 0.587G + 0.114B

U= 0.492(B − Y)= = − 0.147R − 0.289G + 0.436B

V= 0.877(R − Y)

Trang 18

Hệ YUV là kết quả nghiên cứu của các nhà sản xuất vô tuyến truyền hình hệ Pal, Secam

và NTSC, nhận thấy tín hiệu video có thể phân ra 3 thành phần Y, U, V (cũng như phântheo màu chuẩn đỏ, xanh lá cây và xanh da trời) Và một điều thú vị là hệ nhãn thị củacon người rất nhạy cảm với thành phần Y và kém nhạy cảm với hai loại U và V Phươngpháp JPEG đã nắm bắt phát hiện này để tách những thông tin thừa của ảnh Hệ thống nénthành phần Y của ảnh với mức độ ít hơn so với U, V, bởi người ta ít nhận thấy sự thay đổicủa U và V so với Y

Giai đoạn tiếp theo là biến đổi những vùng thể hiện dùng biến đổi cosin rời rạc(thông thường là những vùng 8x8 pixel) Khi đó thông tin về 64 pixel ban đầu sẽ biến đổithành ma trận có 64 hệ số thể hiện "thực trạng" các pixel Điều quan trọng là ở đây hệ sốđầu tiên có khả năng thể hiện "thực trạng" cao nhất, khả năng đó giảm rất nhanh với các

hệ số khác Nói cách khác thì lượng thông tin của 64 pixel tập trung chủ yếu ở một số hệ

số ma trận theo biến đổi trên Trong giai đoạn này có sự mất mát thông tin, bởi không cóbiến đổi ngược chính xác Nhưng lượng thông tin bị mất này chưa đáng kể so với giaiđoạn tiếp theo Ma trận nhận được sau biến đổi cosin rời rạc được lược bớt sự khác nhaugiữa các hệ số Đây chính là lúc mất nhiều thông tin vì người ta sẽ vứt bỏ những thay đổinhỏ của các hệ số Như thế khi bung ảnh đã nén bạn sẽ có được những tham số khác củacác pixel Các biến đổi trên áp dụng cho thành phần U và V của ảnh với mực độ cao hơn

so với Y (mất nhiều thông tin của U và V hơn)

DCT

Các giá trị mức xám của 1 khối 64 điểm ảnh

Trang 19

Hình 2.1 Các bước của quá trình mã hóa biến đổi DCT đối với 1 khối

2.2.3 Lượng tử và giải lượng tử

Sau khi thực hiện biến đổi DCT, 64 hệ số sẽ được lượng tử hóa dựa trên một bảng lượng

tử gồm 64 phần tử Q(u,v) với 0 ≤ u, v ≤ 7 Bảng này được định nghĩa bởi từng ứng dụng

cụ thể Các phần tử trong bảng lượng tử có giá trị 1 đến 255 được gọi là các bước nhảycho các hệ số DCT Quá trình này sau đó sẽ được làm tròn xuống số nguyên gần nhất.Công thức 3 thể hiện lượng tử với F(u,v) là các hệ số DCT, FQ(u,v) là các hệ số sau lượng

tử, các hệ số này sẽ được đưa vào bộ mã hóa Entropy

Công thức (3)Mục đích của việc lượng tử hóa là giảm số lượng bit cần để lưu trữ các hệ số biến đổibằng việc giảm độ chính xác của các hệ số này cho nên lượng tử là quá trình xử lý có mấtthông tin

Quá trình giải lượng tử ở phía bộ giải mã được thực hiện ngược lại Các hệ số sau bộ giải

mã entropy sẽ nhân với các bước nhảy trong bảng lượng tử (bảng lượng tử được đặt trongphần header của ảnh JPEG) Kết quả này sau đó được đưa vào biến đổi DCT ngược.Các bước đầu tiên của quá trình này là khôi phục các bảng Huffman từ hình ảnh & giải nén Ở phần tiếp theo, giá trị DCT của mỗi khối sẽ giải nén một khối JPEG sẽ giúp giải nén 63 giá trị còn lại trong mỗi khối bằng cách điền vào số 0 yêu cầu Ở bước cuối cùng, thứ tự zigzag kết hợp sẽ được giải mã và các khối có kích thước 8x8 được hình thành [10]

2.2.4 Khái niệm về Matlab

Matlab (MATrix LABoratory) là một ngôn ngữ lập trình thực hành bậc cao sử dụng để giải các bài toán kỹ thuật Matlab tích hợp được việc tính toán, thể hiện hiểu quả, cho phép lập trình, giao diện làm việc dễ dàng cho người sử dụng Dữ liệu cùng với thư viện được lập trình sẵn cho phép người sử dụng có thể sử dụng được những ứng dụng sau đây:

- Sử dụng các hàm có sẵn trong thư viện, các phép tính toán học thông thường

- Cho phép lập trình tạo ra ứng dụng mới

- Cho phép mô phỏng các mô hình thực tế

- Phân tích, khảo sát, hiển thị dữ liệu

- Với phần mềm đồ họa mạnh

Các hệ số biến đổi DCT thuậnCác hệ số sau lượng tử hóa

Trang 20

- Cho phép phát triển, giao tiếp với một số phần mềm như C++, Fortran [9]

2.2.5 Cấu trúc dữ liệu của Matlab và các ứng dụng

Matlab là một hệ thống tương giao, các phần tử dữ liệu là một mảng (không đòi hỏi kích thước) Chúng cho phép giải quyết vấn đề liên quan đến lập trình bằng máy tính, đặc biệt

sử dụng các phép tính về ma trận, vector và có thể sử dụng ngôn ngữ C hoặc Fortran lập trình, thực hiện ứng dụng lập trình đó bằng các câu lệnh từ Matlab

Matrix laboratory tức là thư viện về ma trận, từ đó phần mềm Matlab được viết nhằm cung cấp cho việc truy cập vào phần mềm ma trận dễ dàng, phần mềm ma trận này còn được phát triển bởi các công trình Linpack và Eispack Hiện nay, Matlab được phát triển bởi Lapack và Artpack tạo nên một nghệ thuật phần mềm cho ma trận

2.2.5.1 Dữ liệu trong Matlab

Dữ liệu trong Matlab được thể hiện dưới dạng ma trận và có các kiểu dữ liệu được liệt kê sau đây:

- Kiểu đơn single: kiểu này có lợi cho bộ nhớ dữ liệu vì nó đòi hỏi ít byte nhớ hơn Không được sử dụng trong các phép tính toán học, độ chính xác kém

- Kiểu double: kiểu này là kiểu thông dụng nhất trong các biến của Matlab

- Các kỹ sư, các nhà nghiên cứu khoa học

- Dùng Matlab để tính toán, nghiên cứu tạo ra các sản phẩm tốt nhất trong sản xuất

2.2.5.3 Các hàm chuyển đổi kiểu ảnh

Với các thao tác nhất định, thuận tiện khi chuyển đổi ảnh từ dạng này sang dạng khác Nếu ta muốn lọc một ảnh màu được lưu trữ dưới dạng ảnh số, ta phải chuyển đổi nó thành dạng ảnh RGB Khi áp dụng phép lọc tới ảnh RGB, Matlab sẽ lọc giá trị cường độ tương ứng trong ảnh Nếu Lọc ảnh số Matlab đơn giản chỉ áp đặt phép lọc tới ma trận ảnhsố

Các hàm được sử dụng trong chuyển đổi ảnh:

Trang 21

- dither: Tạo một ảnh nhị phân từ một ảnh cường độ đen trắng bằng cách trộn, tạo

một ảnh từ một ảnh RGB

- gray2id: Tạo một ảnh chỉ số từ một ảnh cường độ đen trắng.

- grayslice: Tạo một ảnh từ một ảnh cường độ đen trắng bằng cách đặt ngưỡng.

- im2bw: Tạo một ảnh nhị phân tử từ một một ảnh cường độ, ảnh chỉ số hay ảnh

RGB trên cơ cở ngưỡng ánh sáng

- ind2gray: Tạo một ảnh cường độ đen trắng từ một ảnh chỉ số.

2.3 Cơ sở lý thuyết GUI

2.3.1 Sơ lược về lập trình giao diện người dùng GUIDE trong MATLAB

2.3.1.1 Khái niệm GUI

Để thuận tiện cho việc sử dụng các ứng dụng hay chương trình mà ta đã viết chúng ta cóthể tạo ra giao diện đồ họa GUI (Graphic User Interface) giữa ngưới dùng và Matlab.Trong giao diện này ta có thể xuất dữ liệu dưới hai dạng văn bản và đồ họa Mỗi một GUI

có thể có một hay nhiều giao diện Việc tạo GUI tạo nên một công cụ nhập xuất dữ liệumột cách trực quan, nhanh chóng và rất thuận tiện Ngoài ra có thể dùng GUI để giám sátcác quá trình, hiển thị các đối tượng

Ứng dụng của Matlab lập trình giao diện rất mạnh và dễ thực hiện, nó có thể tạo ra giaodiện người dùng tương tự VBB, C++

GUI bao gồm đầy đủ các chương trình hỗ trợ như thực hiện phép toán LOGIC, mô phỏngkhông gian 2D, 3D, đọc hiển thị dữ liệu Giao tiếp với người dùng thông qua hình ảnh,các nút nhấn thực thi

Hầu hết GUI chỉ thực hiện (trả lời) lệnh người dùng thông qua các tác động của ngườidùng lên giao diện, người sử dụng không cần biết cấu trúc chương trình vẫn có thể thựchiện được GUI được thực hiện thông qua các hàm CALLBACK, khi người dùng tácđộng lên giao diện bằng các cách khác nhau, hàm CALLBACK sẽ được gọi để thực thi.[5]

2.3.1.2 Bắt đầu với GUI

Trang 22

2.3.1.3 Các bước thực hiện

- Trước tiên để bắt đầu lập trình ta cần phải xác định mục đích của chương trình là gì?

- Sau đó tiến hành xác định các bước thực hiện để mô phỏng giao diện người dùng saocho hợp lí và chính xác

- Bước cuối cùng là viết chương trình và thực thi

- Khi bắt đầu với GUI, GUI tự động tạo ra các mã tập tin được thực thi bởi hàm Callbackfunction GUI thao tác trên những kí tự mà người dùng nhập vào và chuyển sang dạng sốhọc, nói cách khác, giao diện GUI tương tự như những lệnh thực thi trong CommentWindowns

- Tất cả các hàm callback thực thi những lệnh chứa trong nó

- Chúng ta nên sử dụng chức năng HELP của Matlab để tìm hiểu thêm tất cả cách hàmthực thi trong GUI, cách tạo và thao tác với GUI [8]

2.3.2 Thao tác với GUI

2.3.2.1 Cách tạo giao diện GUI

Trên đây ta đã xem xét cách tạo GUI bằng phương pháp thủ công Ta có thể tạo GUItrong Matlab bằng những cách dưới đây :

Cách 1: Gõ lệnh guide trong cửa sổ Command Window

Hình 2.2 Tạo giao diện GUICách 2: Click chuột vào New -> App -> Click double chuột vào GUIDE

Trang 23

Hình 2.3 Tạo giao diện GUISau khi gõ lệnh guide, ta sẽ nhận được cửa sổ GUIDE Quick Start

Hình 2.4 Tạo giao diện GUI

Trang 24

Create New GUI: Tạo giao diện GUI mới.

Open Existing GUI: Mở những giao diện đã có sẵn.

Blank GUI (Default): Giao diện trống, dễ dàng thuận tiện trong việc tạo giao diện

theo mong muốn

GUI with Uicontrols: Hộp thoại GUI với một vài uicontrol như button, …

Chương trình có thể chạy ngay

GUI with Axes and Menu: Hộp thoại GUI với một uicontrol axes và button, các

menu để hiển thị đồ thị

Modal Question Dialog: Hộp thoại đặt câu hỏi Yes, No. [13]

Hình 2.5 Tạo giao diện GUIChúng ta chọn Create New GUI sau đó chọn Blank GUI (Default) để tạo GUI trống vàthiết lập các thông số theo mong muốn Kết quả cho ra một layout trắng như hình sau:

Trang 25

Hình 2.6 Tạo giao diện GUITại giao diện , ta sẽ có những Tool sử dụng để thiết kế giao diện.

Hình 2.7 Tạo giao diện GUI

Trang 26

Push Button: Dùng để khi bạn nhấn chuột vào thì nút này sẽ xử lý một công việc

nào đó mà bạn muốn

Static Text: Dùng để hiện thì thông tin cho một đối tượng nào đó hoặc bạn có thể

xuất dữ liệu từ trương trình ra đây

Edit Text: Dùng để nhập dữ liệu vào và lấy dữ liệu đó để thực thi việc gì đó.

Axes: Dùng để hiển thị hình ảnh.

Panel: Dùng để cung cấp khả năng điều khiển dễ dàng hơn trên layout.

Để thay đổi tên của các tool này cũng như màu sắc, thuộc tính… thì bạn chỉ cần nhấp đúpchuột vào Tool đó thì lập tức một cửa sổ mới xuất hiện được gọi là Inspector

Push Button: Dùng để khi bạn nhấn chuột vào thì nút này sẽ xử lý một công việc

nào đó mà bạn muốn

Static Text: Dùng để hiện thì thông tin cho một đối tượng nào đó hoặc bạn có thể

xuất dữ liệu từ trương trình ra đây

Edit Text: Dùng để nhập dữ liệu vào và lấy dữ liệu đó để thực thi việc gì đó.

Axes: Dùng để hiển thị hình ảnh.

Panel: Dùng để cung cấp khả năng điều khiển dễ dàng hơn trên layout.

Để thay đổi tên của các tool này cũng như màu sắc, thuộc tính… thì bạn chỉ cần nhấp đúpchuột vào Tool đó thì lập tức một cửa sổ mới xuất hiện được gọi là Inspector

Trang 27

String: Là trường để hiện thị tên nào đó mà bạn muốn hiện thị ở GUI, nó không

ảnh hưởng đến chương trình (code) mà bạn thực hiện

Style: Chức năng cái này là bạn có thể thay đổi đối tượng Tool này thành một đối

tượng khác mà bạn muốn ví dụ như là bạn thay đổi Static Text thành PushButton chẳng hạn

Tag: Nó có chức năng định danh cho Tool khi vào lập trình bạn lấy tên này để gọi

xử lý một chức năng nào đó Bạn có thể thay đổi thành tên nào cũng được nhưngtuyệt đối bạn không được đặt tên trùng với tên mà các Tool khác đã đặt trước đó

Sơ đồ 2.3 Sơ đồ khối mô tả hoạt động của GUI khi thao tác trên giao diện

Layout editor Chọn các thành phần từ bảng thành phần, trình bày và sắp

xếp chúng trong các khu vực bố trí (tùy chỉnh hiện tên cácthành phần: File => Preferences)

Align Objects Dùng để sắp xếp các đối tượng điều khiển

Menu Edior Tạo menu cho giao diện

Tab Order Editor Thiết lập các tab và sắp xếp thứ tự của các thành phần

trong bố trí của bạn

Toolbar Editor Thanh công cụ tạo ra có chứa các nút bấm được xác định

trước và tùy chỉnh và chuyển đổi nút

Trang 28

Editor Hiển thị, trong trình soạn thảo mặc định của bạn, các tập

tin mã kết hợp với giao diện đồ họa

M-file editor Mở cửa sổ M-file

Property Inspector Thiết lập các thuộc tính của các đối tượng điều khiển Nó

cung cấp một danh sách tất cả các thuộc tính bạn có thểthiết lập và hiển thị các giá trị hiện tại của chúng

Object Browser Hiển thị một danh sách phân cấp của các đối tượng trong

giao diện đồ họa

Run Lưu và chạy giao diện hiện tại

Resize Box Tùy chỉnh kích thước giao diện

Position Readouts Liên tục hiển thị vị trí con trỏ chuột và vị trí của các đối

tượng được chọn

Bảng 2.1 Mô tả chức năng các công cụ cơ bản

Trang 29

CHƯƠNG 3: THIẾT KẾ VÀ LẬP TRÌNH

3.1 Thiết kế giao diện GUI

3.1.1 Giao diện giới thiệu

Nhấn tổ hợp phím Ctrl + S để thực hiện lưu file, sau khi chọn đường dẫn để lưu file (Chú

ý không lưu file với các biến đặc biệt hoặc bằng các con số khởi đầu), nhấn save Matlab

sẽ tự động tạo ra 2 file gồm một file m và một file fig, trong đó file m là Mfile chứa cáchàm Matlab đã tạo sẵn hỗ trợ giao diện [9]

Lần lượt kéo thiết kế giao diện như hình sau:

Hình 3.1 Khởi tạo giao diện GUIMỗi hộp thoại có Inspector , bằng cách nhâp đúp chuột vào hoặc chuột phải chọnProperty Inspector

Trang 30

3.1.1.1 Tạo thuộc tính cho đối tượng

Sau đây là bảng mô tả các giá trị và thuộc tính của các hộp thoại trong hình, chúng ta tiến

hành thay đổi các giá trị tương ứng theo bảng sau:

STT Tên thuộc tính Giá trị thuộc tính

Trang 31

Hình 3.2 Giao diện ứng dụng

3.1.1.2 Một số tính năng mở rộng

Chú ý, để tạo sự thẳng hàng, cột của các hộp thoại cho đẹp mắt ta làm như sau:

Nhấn giữ phím Ctrl và nhập vào các hộp thoại muốn chỉnh sửa, Trên Menu chọn AlignObjects Hộp thoại Align hiện ra:

Trang 32

Hình 3.3a Hộp thoại Align Objects trên giao diệnTrong hộp thoại trên ta có thể cân chỉnh các nút, nhóm nút sao cho chúng thẳnghàng,thẳng cột và đều nhau Sau khi cân chỉnh nhấn nút Apply để lưu thay đổi.

Trên hộp thoại GUI Options tại Resize behavior chọn dòng số 2 (Proportional), dòng nàycho phép người dùng thay đổi khích thước của giao diện và các đối tượng cũng tự độngthay đổi kích thước phù hợp với nền giao diện, nhấn OK để lưu thay đổi [9]

Trang 33

Hình 3.3b Hộp thoại Align Objects trên giao diện

3.1.1.3 Thực thi hàm:

a) Giao diện trong mfile

Khi đã cân chỉnh xong toàn bộ giao diện trong GUI,nhấn Ctrl+S hoặc nhấn vào biểutượng Save trên thanh Menu tại đây ta có thể lưu trữ file fig và Matlab sẽ tạo ra file m

Trang 34

Hình 3.4 Giao diện mfileKhi ta chưa thao tác trong Trong file m xuất hiện như trên hình, trong đó, tất cả các hàmfunction đều được Matlab hỗ trợ tạo sẵn các hàm chức năng có liên quan, ta chỉ việc thaotác trên đó.

Mỗi sau một hàm bất kì đều có các chú thích bên dưới (sau dấu %), ta có thể xóa toàn bộchúng đi đễ dễ nhìn cũng không ảnh hưởng đến các hàm

Trong Mfile có sẵn các hàm callback, ta có thể tìm trong Mfile các hàm liên quan để viếtcâu lệnh, tuy nhiên, để nhanh hơn chúng ta có thể làm như sau:

 Quay lại màn hình giao diện GUI vừa thiết kế, nhấp vào hộp thoại muốn thực thihàm callback, nhấp chuột phải vào đối tượng chọn View Callbacks -> Callback,Như hình sau:

Trang 35

Hình 3.5 Tìm hàm callback cho đối tượng điều khiển

 Sau đó hàm callback sẽ tự động được gọi và con trỏ chuột sẽ tìm đến vị trí của nótrong Mfile

Bây giờ khi muốn gọi một hàm nào ta cũng có thể thực hiện như trên Sau đó tiến hànhviết câu lệnh cho nó

a) Một số hàm trong GUI

Hàm callback được lập trình cho các nút button, checkbox, edit text… nhưng static text

và axes… thì không có hàm callback

Mỗi một callback được viết với cấu trúc như sau:

function Tag_Callback(hObject, eventdata, handles)

Với Tag chính là giá trị của Tag mà ta đã đặt khi tạo giao diện Các hàm chứa bên trongcallback bao gồm hObject, evendata,handles [9]

 Hobject là hàm truy cập nội bộ của mỗi function riêng lẽ

 Evendata là hàm xác đinh thuộc tính của function

Trang 36

 Handles là hàm truy cập liên kết giữa các function, nó bao gồm tất cả các cấu trúccủa người dùng, được sử dụng để truy xuất qua các điều khiển khác

Hàm Get cho phép ta gọi thuộc tính của đối tượng

Hàm Set cho phép ta đặt giá trị cho thuộc tính của đối tượng

b) Lập trình các đối tượng

Nút BUTTON “chuyển giao diện:

- Thực hiện các bước như trên ta bắt đầu viết code cho giao diện giới thiệu

- Ta click chuột phải vào đối tượng “Chuyển Giao Diện” chọn “View Callbacks”sau đó chọn “ Callback” Matlab sẽ chuyển qua giao diện file m để viết code chonút tượng “Chuyển Giao Diện”

- Lần lượt viết code vào phần function như bên dưới:

function ChuyenGiaoDien_Callback(hObject, eventdata, handles)

• Công dụng: Chuyển sang giao diện làm việc chính DCT

Nút BUTTON “ đóng giao diện”

- Thực hiện các bước như trên ta bắt đầu viết code cho giao diện giới thiệu

- Ta click chuột phải vào đối tượng “Đóng Giao Diện” chọn “View Callbacks” sau

đó chọn “ Callback” Matlab sẽ chuyển qua giao diện file m để viết code cho núttượng “Đóng Giao Diện”

- Lần lượt viết code vào phần function như bên dưới:

function DongGiaoDien_Callback(hObject, eventdata, handles)

choice = questdlg('Ban co muon dong chuong trinh?', %Bat dialog hoi comuon tat giao dien khong

Trang 37

• Công dụng: Gán cho biến choice bằng câu lệnh bên dưới.

• Trong đó: Khi ta nhấn nút 'Có' thì phần code sẽ chạy tới lệnh close giaodiện giới thiệu sẽ đóng còn nếu nhấn nút 'Không'thì code sẽ chạy tớilệnh end đóng lại khung cửa sổ tắt giao diện

“Mở giao diện”

- Ta tìm đến hàng code trong file giaodien.m

function varargout = giaodien_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

- Lần lượt viết code vào phần function như bên dưới

function varargout = giaodien_OutputFcn(hObject, eventdata, handles)

• Công dụng: Hiển thị hình ảnh logo.jpg theo đường dẫn ta đã dẫn lên phần axes

có tag là LogoTruong

Trang 38

• Công dụng: Hiển thị hình ảnh Thy.jpg theo đường dẫn ta đã dẫn lên phần axes cótag là Thy.

• Trong đó:

o Thy là biến được gán

o imread đọc giá trị thuộc tính theo đường dẫn

o imshow hiển thị bức ảnh đã chọn

 Câu lệnh 3:

axes(handles.Tien);

Thy=imread('Tien.jpg');imshow(Thy);

• Công dụng: Hiển thị hình ảnh Tien.jpg theo đường dẫn ta đã dẫn lên phần axes cótag là Tien

• Trong đó:

o Tien là biến được gán

o imread đọc giá trị thuộc tính theo đường dẫn

o imshow hiển thị bức ảnh đã chọn

3.1.2 Giao diện nén ảnh DCT

3.1.2.1 Khởi tạo đối tượng điều khiển

- Tương tự ở phần Giao diện giới thiệu

- Lần lượt kéo thả các nút như hình bên dưới:

Trang 39

Hình 3.6 Thiết kế giao diện

- Mỗi hộp thoại có Inspector , bằng cách nhâp đúp chuột vào hoặc chuột phải chọnProperty Inspector

3.1.2.2 Tạo thuộc tính cho các đối tượng:

- Sau đây là bảng mô tả các giá trị và thuộc tính của các hộp thoại trong hình, chúng

ta tiến hành thay đổi các giá trị tương ứng theo bảng sau:

STT Tên Thuộc Tính Giá Trị Thuộc Tính

Ngày đăng: 15/07/2019, 22:26

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[11] Diễn đàn Matlab: https://www.mathworks.com/ Link
[12] Matlab thầy Tạ Hải: http://www.matlabthayhai.info Link
[13] Diễn đàn: https://vutienblog.com/xu-ly-anh-matlab-tong-quan-ve-anh-so/ Link
[3] TS Phạm Việt Hà: Xử lý tín hiệu và mã hóa, Viên Khoa học Kỹ thuật Bưu điện Khác
[4] Phan Thanh Tao: Giáo trình MATLAB, Trường Đại học Bách khoa Đà Nẵng Khác
[5] Nguyễn Phùng Quang: Giáo trình Matlab & Simulink, Kỹ Thuật – Công Nghệ Khác
[6] Nguyễn Quốc Trung: Xử lý tín hiệu và lọc số, Khoa học và Kỹ thuật, 2004 Khác
[7] Võ Đức Khánh, Hoàng Văn Kiếm, Giáo trình xử lý ảnh số, Đại học Quốc gia Thành phố Hồ Chí Minh Khác
[8] Nguyễn Kim Sách. Xử lý ảnh và Video số, Khoa học và Kỹ thuật, 1997 Khác
[9] TS Phạm Hồng Liên, Đặng Ngọc Khoa, Trần Thanh Phương: Matlab và ứng dụng trong viễn thông Khác
[10] Surbhi Singh, Vipin kumar Gupta: JPEG Image Compression and Decompression by Huffman Coding Khác

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w