Công nghệ đa phương tiện Tổng quan về môn học Multimedia và các khái niệm cơ bản Các giải thuật nén dữ liệu dùng trong công nghệ Multimedia Giới thiệu một số kỹ thuật lập trình ứng dụng với công nghệ Multimedia Phát triển ứng dụng với công nghệ Multimedia 2 Trần Nguyên Ngọc 2010 Multimedia là gì? Media – phương tiện truyền thông Multimedia – tổ hợp các phương tiện truyền thông Tại sao cần tổ hợp các phương tiện truyền thông? Vấn đề Internet và toàn cầu hóa 3 Trần Nguyên Ngọc 2010 Multimedia bao gồm những nội dung gì? 1. Văn bản – Text 2. Âm thanh – Audio 3. Ảnh tĩnh – still images 4. Ảnh động – Animation 5. Phim – video 6. Môi trường tương tác – interactivity 7. Truyền tải thông tin – networking 4 Trần Nguyên Ngọc 2010 Các ứng dụng theo nội dung Text: Tìm kiếm thông tin (Search), Lọc nội dung (Content filter), Mã hóa thông tin, OCR… Audio: Nén âm thanh (các chuẩn wav, mp3…), Lọc nhiễu, nhận dạng tiếng nói (speech to text), tổng hợp tiếng nói… Ảnh tĩnh: Nén ảnh (các chuẩn bmp, gif, jpeg…), Xử lý ảnh (image processing), giấu tin trong ảnh, nhận dạng đối tượng trong ảnh… Ảnh động: tạo ảnh động, nén ảnh động… Phim: dựng phim, xử lý video, nhận dạng từ video Môi trường tương tác: GUI, NUI Truyền thông: gửi nhận thông tin qua mạng, một số chuẩn giao tiếp thông tin, các thiết bị kết nối ngoài (máy đọc thẻ RFID, BARCODE, IPCamera, CCTV Camera…)
Trang 1Công nghệ đa phương tiện
Trang 2Tổng quan về môn học
Multimedia và các khái niệm cơ bản
Các giải thuật nén dữ liệu dùng trong công nghệ
Trang 3Multimedia là gì?
Media – phương tiện truyền thông
Multimedia – tổ hợp các phương tiện truyền thông
Tại sao cần tổ hợp các phương tiện truyền thông?
Vấn đề Internet và toàn cầu hóa
3 Trần Nguyên Ngọc - 2010
Trang 4Multimedia bao gồm những nội
6 Môi trường tương tác – interactivity
7 Truyền tải thông tin – networking
4 Trần Nguyên Ngọc - 2010
Trang 5Các ứng dụng theo nội dung
filter), Mã hóa thông tin, OCR…
nhận dạng tiếng nói (speech to text), tổng hợp tiếng nói…
(image processing), giấu tin trong ảnh, nhận dạng đối
tượng trong ảnh…
giao tiếp thông tin, các thiết bị kết nối ngoài (máy đọc thẻ RFID, BARCODE, IPCamera, CCTV Camera…)
Trang 6Lập trình với Multimedia
Yêu cầu: xử lý khối lượng thông tin lớn, trong nhiều
trường hợp chương trình ứng dụng phụ thuộc vào
thiết bị, xử lý cùng lúc nhiều dạng thông tin khác
nhau, phục vụ nhiều đối tượng khác nhau.
Giải pháp: sử dụng các công cụ lập trình mạnh, khai
thác các thư viện sẵn có(Open Source), phát triển và
tối ưu hóa thuật toán phù hợp với thiết thiết bị.
Các kỹ thuật cần trang bị: OpenMP, MMX/SIMD,
Multithreading, làm việc với tài liệu SDK(software
development kit) và các thư viện lập trình.
Trang 7Các bài tập
Xây dựng ứng dụng Webcrawler phục vụ cho việc lọc
tin tự động.
Xây dựng ứng dụng nhận dạng văn bản sử dụng công
nghệ OCR của Microsoft Office.
Sử dụng thư viện Text to Speech của Microsoft để xây
dựng ứng dụng đọc báo trên mạng.
Xây dựng ứng dụng đọc báo Vnexpress tự động bằng
tiếng việt.
Xây dựng ứng dụng hỗ trợ hiển thị thông tin về trận
đấu trên các đoạn Video cho các biên tập viên bóng đá.
Trang 8Các bài tập (tiếp theo)
Nghiên cứu bộ thư viện OCR Tesseract của Google và
xây dựng ứng dụng xử lý văn bản tiếng việt.
Xây dựng phần mềm tự động hướng dẫn sử dụng máy
tính bằng việc mô phỏng tương tác của chuột và bàn phím thông qua hệ thống thông điệp của HĐH
Windows.
Xây dựng ứng dụng cho phép điều khiển máy tính từ
xa (Remote Desktop)
Tìm hiểu và nghiên cứu các chuẩn nén video Viết
chương trình minh họa.
Xây dựng chương trình hỗ trợ biên tập Karaoke
Trang 9Khai thác thông tin
Information Retrieval
Trang 10Tài liệu tham khảo
Trang 11Information Retrieval là gì?
• Information retrieval (IR) là quá trình tìm kiếm
dữ liệu (thường là tìm dưới dạng một đoạn
văn bản) từ một tập hợp lớn các đối tượng
không có cấu trúc tường minh (thường là text
lưu trữ trong máy tính) nhằm đáp ứng một
nhu cầu về thông tin.
• Data-> information -> knowledge
Trang 12Thực trạng nhu cầu
Trang 13Ví dụ hàng ngày
Trang 14Thực chất google làm gì?
• Gửi đi một yêu cầu (query)?
Nhìn thấy:
http://www.google.com.vn/search?hl=vi&q=mul timedia+c%C3%B3+ngh%C4%A9a+l%C3%A0+g
%C3%AC&oq=multimedia+c%C3%B3+ngh%C4
%A9a+l%C3%A0+g%C3%AC&aq=f&aqi=&aql=
&gs_sm=e&gs_upl=205202l207268l0l15l6l0l0l 0l0l0l0l
Xử lý tiếp theo là gi?
Trang 15Làm thế nào để máy tính hiểu yêu
cầu?
• Boolean retrieval: thiết kế và cấu trúc dữ liệu cho một hệ thống thu thập thông tin đơn giản Quy trình Hoạt động:
1 Xây dựng Boolean model, mô hình logic dùng
để thu thập thông tin.
2 Biểu diễn yêu cầu dưới dạng biểu thức logic
3 Search engine trả về tất cả các tài liệu thỏa
mãn biểu thức logic
Trang 16Quá trình tìm kiếm
•Multimedia là gì?
Multimedia + là + gì + ? là=l +a + \
gì=g +I +\
Trang 17Chỉ số hóa
Vnexpress IR
book
Forum IT
Dân trí
Trang 18• Trung bình k|h|o|ả|n|g| 6 bytes cho một từ
tách rời ra (tính cả dấu cách dấu biểu cảm)
• Suy ra kho dữ liệu khoảng 6GB
• Giả sử chỉ có khoảng 500K từ -> cần lập bảng thống kê với số lượng:
500000*1000000=5*10^11
Trang 20• Phân loại mức độ “tốt” của thông tin tìm
được, thế nào là giống với yêu cầu tìm kiếm nhất?
Trang 21Tìm kiếm
• Tìm Multimedia trong từ điển
• Đưa ra các chỉ số file văn bản (danh sách 1)
chứa từ Multimedia
• Tìm từ là trong từ điển
• Đưa ra các chỉ số file (danh sách 2) chứa từ là
• Tìm điểm chung giữa 2 danh sách 1 &2
Trang 22Algorithms
Trang 23Vấn đề cấu trúc dữ liệu text
• HTML (Hyper text markup language)
• XML (Extensible Markup language)
• SIML (Synchronized Multimedia Integration Language) http://www.w3.org/Audio
Trang 24• HTML là chữ viết tắt của Hyper Text Markup Language (Ngôn ngữ hiển thịsiêu văn bản)
• - Một file HTML là một file text bao gồm những tag nhỏ
• - Những tag hiển thị nói cho trình duyệt biết nó phải hiển thị trang đó nhưthế nào
• - Một file HTML phải có phần mở rộng là htm hoặc html
• - Một file HTML có thể được tạo bởi một trình soạn thảo đơn giản
• <p>Đây là đoạn văn</p>
<p>Đây là một đoạn văn khác</p>
• Vấn đề của HTML là nó được thiết kế như trong ý nghĩ của con người Cho
dù thông tin trên HTML không được thể hiện trên một trình duyệt thì
chúng ta vẫn đoán biết
• Con người chúng ta đều có trí thông minh để hiểu được ý nghĩa và mụcđích của hầu hết các văn bản Tuy nhiên một cỗ máy lại không như thế Khicác thẻ trong tài liệu này chỉ cho một trình duyệt cách thể hiện thông tin, thì bản thân các thẻ lại không chỉ cho trình duyệt thông tin đó là gì
Trang 25• Lớp XML Extensible Markup Language là một mở
rộng của ngôn ngữ đánh dấu cho các các cấu trúc tài liệu bất kỳ
• I just got a new pet dog.
Trang 26Search engine
Trang 27Giới thiệu công cụ tìm kiếm
trong văn bản
Regular Expression
Trang 28Khái niệm
• Regular Expression là một biểu thức dùng
để mô tả một tập các chuỗi ký tự theo một quy tắc nào đó.
• Ví dụ: trong lệnh dir *.exe của DOS, *.exe
mô tả tập tất cả các file có phần mở rộng
là exe.
Trang 29Một số quy tắc
: đại diện cho một ký tự bất kỳ trừ ‘ ’.
? : ký tự đứng trước xuất hiện 0 hoặc 1 lần.
+ : ký tự đứng trước xuất hiện từ 1 đến nhiều lần.
* : ký tự đứng trước xuất hiện từ 0 đến nhiều lần.
Trang 30Ví dụ
• t.a : tea, tia, toa, tua, …
colou?r : color, colour.
goo+gle : google, gooogle, gooooogle, … 0*42 : 42, 042, 0042, 00042, …
Trang 31gr[ae]y : gray, grey.
[hc]+at : hat, cat, chat, hcat, hhat, ccat, … (grand)?father : father, grandfather.
([dD]og)|([cC]at) : dog, Dog, cat, Cat.
Trang 33Học Matlab thế nào?
• Dữ liệu lớn? File text 20M
Trang 34Handling Multiple Strings
•Any of the MATLAB regular expression functions can be used
•Any or all of the input parameters (the string, expression, or replacement string) can be a cell array of strings
arrays have the same number of elements if both are
vectorised (i.e., if they have dimensions greater than 1-by-N)
replacement arrays have the same number of elements if the replacement array is vectorised (The cell arrays do not have to have the same shape.)
•Whenever the first input parameter to a regular expression
same size
Trang 35Finding a Single Pattern in Multiple Strings
array of strings cstr It searches each string of the cell array for consecutive matching letters (e.g., 'oo') The function
returns a cell array of the same size as the input array Each row of the return array contains the indices for which there was a match against the input cell array.
•The input cell array
•In the input cell array (cstr), find consecutive matching
letters by capturing a letter as a token (.) and then repeating that letter as a token reference, \1:
Trang 36idx = regexp(cstr, '(.)\1');
whos idx
•To return substrings instead of indices, use the 'match' parameter:
mat = regexp(cstr, '(.)\1', 'match');
mat{3}
ans =
Trang 37Finding Multiple Patterns in Multiple Strings
A cell array of strings in both the input string and the expression will be used The two cell arrays are of different shapes: cstr is 4-by-1 while expr is 1-by-4 The command is valid as long as they both have the same number of cells
•Find uppercase or lowercase 'i' followed by a white-space character in str{1}, the sequence 'hou' in str{2}, two consecutive matching letters in str{3}, and words beginning with 'w' followed by a vowel in str{4}
expr = {'i\s', 'hou', '(.)\1', '\<w[aeiou]'};
idx = regexpi(cstr, expr);
Trang 38Replacing Multiple Strings
•When replacing multiple strings with regexprep, use a single
replacement string if the expression consists of a single string
•This example uses a common replacement value (' ') for all matches found in the multiple string input cstr
•The function returns a cell array of strings having the same dimensions
as the input cell array:
s = regexprep(cstr, '(.)\1', ' ', 'ignorecase')
s =
‘Whose w ds these are I think I know.' 'His house is in the vi age though;' 'He wi not s me sto ing here' 'To watch his w ds fi up with snow.'
•Multiple replacement strings can be used if the expression consists of multiple strings
•In this example, the input string and replacement string are both 4-by-1 cell arrays, and the expression is a 1-by-4 cell array
•As long as the expression and replacement arrays contain the same number of elements, the statement is valid
Trang 39Replacing Multiple Strings
•The dimensions of the return value match the dimensions of the input string:
expr = {'i\s', 'hou', '(.)\1', '\<w[aeiou]'};
Trang 40Characters and Strings
•In MATLAB, the term string refers to an array of Unicode
characters.
•MATLAB represents each character internally as its
corresponding numeric value
•Unless you want to access these values, however, you can simply work with the characters as they display on screen.
•You can use char to hold an m-by-n array of strings as long
as each string in the array has the same length (This is
because MATLAB arrays must be rectangular.)
•To hold an array of strings of unequal length, use a cell
Trang 41Creating Character Arrays
•Specify character data by placing characters inside a pair of single quotes For example, this line creates a 1-by-13 character array called
name:
name = 'Thomas R Lee';
•In the workspace, the output of whos shows
•You can see that each character uses two bytes of storage internally
array:
class(name) ans =
char ischar(name) ans =
1
Trang 42•You can also join two or more character arrays together to create a new character array
the input arrays:
name = 'Thomas R Lee';
title = ' Sr Developer'; strcat(name,',',title) ans =
Thomas R Lee, Sr Developer
•strvcat can be used to concatenate strings vertically
–S = strvcat(t1, t2, t3, ) forms the character array S containing the text strings (or string matrices) t1,t2,t3, as rows
–Spaces are appended to each string as necessary to form a valid matrix
–Empty arguments are ignored
–The command strvcat('Hello','Yes') is the same as ['Hello';'Yes '], except that strvcat performs the padding automatically
Trang 43Creating Two-Dimensional Character Arrays
•When creating a two-dimensional character array, be sure that each row has the same length For example, this line is legal because both input rows have exactly 13 characters:
name = ['Thomas R Lee' ; 'Sr Developer']
name = Thomas R Lee
Sr Developer
•When creating character arrays from strings of different lengths, you can pad the shorter strings with blanks to force rows of equal length:
name = ['Thomas R Lee '; 'Senior Developer'];
–S = char(X) converts the array X that contains positive integers representing character codes into a MATLAB character array (the first 127 codes are ASCII) The actual characters displayed depend on the character set encoding for a given font The result for any elements of X outside the range from 0 to 65535 is not defined (and can vary from platform to platform) Use double to convert a character array into its numeric codes
–S = char(C), when C is a cell array of strings, places each element of C into the rows of the character array s Use cellstr to convert back.
–S = char(t1, t2, t3, ) forms the character array S containing the text strings T1, T2, T3, as rows, automatically padding each string with blanks to form a
valid matrix Each text parameter, Ti, can itself be a character array This allows
the creation of arbitrarily large character arrays Empty strings are significant.
Trang 44Creating Two-Dimensional Character Arrays
Lee' with three trailing blanks so that it will be as long as the second
string:
name = char('Thomas R Lee','Senior Developer') name =
Thomas R Lee Senior Developer
remove any trailing blanks:
trimname = deblank(name(1,:)) trimname =
Thomas R Lee size(trimname)
Trang 45Cell Arrays of Strings
•Creating strings in a regular MATLAB array requires that all strings in the array be of the same length This often means that you have to pad blanks at the end of strings to equalize their length However, another type of MATLAB array, the cell array, can hold different sizes and types
of data in an array without padding
•Cell arrays provide a more flexible way to store strings of varying
length
strings
•Let’s consider the following character array
•Each row of the matrix is padded so that all have equal length (in this case, 13 characters)
•Now use cellstr to create a column vector of cells, each cell containing one of the strings from the data array:
Trang 46Cell Arrays of Strings
Note that the cellstr function strips off the blanks that pad the rows of the
input string matrix:length(celldata{3})
ans =
7 The iscellstr function determines if the input argument is a cell array of strings
It returns a logical 1 (true) in the case of celldata:
iscellstr(celldata) ans =
1
strings = char(celldata) strings =
Allison JonesDevelopmentPhoenix
length(strings(3,:)) ans =
13
Trang 47Functions for Cell Arrays of Strings
Function Description
char Convert a cell array of strings to a character array.
sort Sort elements in ascending or descending order.
MATLAB functions for working with cell arrays
Trang 48Functions for Cell Arrays of Strings
Function Description
intersect Set the intersection of two vectors
ismember Detect members of a set
setdiff Return the set difference of two vectors
setxor Set the exclusive OR of two vectors
union Set the union of two vectors
unique Set the unique elements of a vector
set functions with cell arrays of strings
http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_prog/ch2_ch15.html
Trang 49String Comparisons
Comparing Strings for Equality
Any of the following four functions can be used to determine if two input strings are identical:
they ignore case
Example:
str1 = 'hello';
str2 = 'help';
Strings str1 and str2 are not identical, so invoking strcmp returns logical 0
(false) For example,
C = strcmp(str1,str2)
C =
0 The first three characters of str1 and str2 are identical, so invoking strncmp with any value up to 3 returns 1:
C = strncmp(str1, str2, 2)
C =
1
Trang 50String Comparisons (cont.)
Comparing Strings for Equality (cont.)
These functions work cell-by-cell on a cell array of strings Let’s consider the two cell arrays of strings
A = {'pizza'; 'chips'; 'candy'};
B = {'pizza'; 'chocolate'; 'pretzels'};
Now apply the string comparison functions:
strcmp(A,B) ans =
1
0
0 strncmp(A,B,1) ans =
1
1
0
Trang 51String Comparisons (cont.)
Comparing for Equality Using Operators
You can use MATLAB relational operators on character arrays, as long as the arrays you are comparing have equal dimensions, or one is a scalar For
example, you can use the equality operator (==) to determine which characters
in two strings match:
A = 'fate';
B = 'cake';
A == B ans =
All of the relational operators (>, >=, <, <=, ==, ~=) compare the values of
corresponding characters.