MỤC LỤC
Mở đầu
Chương 1: Tổng quan về ngôn ngữ lập trình Visual C++ 6.0
Chương 2: Tổng quan về xử lý ảnh
2.1 Tổng quan về một hệ thống xử lý ảnh
2.2 Các vấn đề cơ bản trong xử lý ảnh nâng cao
2.2.1 Histogram và biến đổi histogram
2.2.2 Các kỹ thuật tăng cường ảnh (Image Enhancement)
2.2.3 Khôi phục ảnh (Image Restauration)
2.2.4 Nhận dạng ảnh
2.2.5 Nén ảnh
Chương 3: Tổng quan về video
3.1 Tổng quan về video
3.2.Một số thuộc tính đặc trưng của video
3.2.1.Color
3.2.2.Texture
3.2.3.Shape
3.2.4.Motion
Chương 4: Các phương pháp xác định độ đo tương tự trong xử lý ảnh
4.1 Giới thiệu
4.2 Phương pháp Histogram dòng, cột
4.3 Mô hình Cognitive Visual Attention (CVA)
4.4 Độ đo tương tự có thể học (Trainable similarity measure)
4.5 Multivariate Two-sample problem
Chương 5: Phân tích và thiết kế hệ thống
5.1.Phân tích
5.1.1.Đặt vấn đề
5.1.2.Phân tích bài toán
5.2.Kỹ thuật đề xuất
5.3.Thiết kế hệ thống
Chương 6: Thực nghiệm
6.1 Giới thiệu chương trình
6.2 Các chức năng chính của chương trình
6.2.1 Giao diện chính
6.2.2 Chức năng mở file video, ảnh gốc
6.2.3 Thao tác với file video
6.2.4 Hiển thị Histogram
6.2.5 Xuất frame ra file bitmap
6.2.6 Khoanh vùng đối tượng cần tìm
6.2.7 Xác định độ đo tương tự
6.3 Kết quả đạt được
KẾT LUẬN
TÀI LIỆU THAM KHẢO
PHỤ LỤC
MỞ ĐẦU
Ngày nay, thông tin hình ảnh đóng vai trò quan trọng trong trao đổi thông tin, bởi phần lớn các thông tin mà con người thu nhận được đều thông qua thị giác. Do vậy vấn đề xử lý ảnh nói chung và xử lý video nói riêng đã phát triển , nó liên quan đến nhiều ngành khác như: hệ thống tin học, lý thuyết thông tin, lý thuyết thống kê, trí tuệ nhân tạo, nhận dạng, v.v. Thực tế này đặt ra ba bài toán lớn. Thứ nhất, giảm dung lượng video và tăng tốc độ xử lý. Thứ hai, tổ chức lưu trữ, tìm kiếm video hiệu quả. Thứ ba, tiến đến việc hiểu nội dung video.
Trong đợt làm đồ án tốt nghiệp này, em đã chọn đề tài là "Tìm kiếm theo nội dung trong file video" vì các lí dó sau. Đầu tiên, đây là đề tài đáp ứng được nguyện vọng vủa em là được nghiên cứu đề tài liên quan đến xử lý ảnh, một vấn đề mà em đã và đang rất qua tâm, thứ hai đây là một trong các bài toán nằm trong lớp bài toán thứ ba đề cập ở trên, một lớp bài toán có ý nghĩa đặc bệt quan trọng do vậy nó mang rất nhiều ý nghĩa thực tiễn, thứ ba đây là một cơ hội rất tốt giúp em có thể tự đánh giá được năng lực bản thân bởi vì đây là một đề tài khó và hiện tại vẫn chưa có nhiều nghiên cứu có kết quả cao và chưa được phổ biến rộng rãi.
74 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 3276 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Tìm kiếm theo nội dung trong file video, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ử dụng để mã hoá ảnh đa mức xám, ảnh màu.Nó không cho kết quả ổn định lắm với ảnh đen trắng.Chuẩn JPEG cung cấp giải thuật cho cả hai loại nén là nén không mất mát thông tin và nén mất mát thông tin.
Ảnh gốc
Phân
đoạn
8x8
8x8
8x8
Lượng tử
hóa
Bảng lượng tử
......
Mã hóa
Bảng mã
Ảnh nén
DCT
Hình 2.5 - Sơ đồ thuật toán nén ảnh JPEG
ẢNH GIẢI NÉN
Lượng tử
hóa
Bảng lượng
tử
Giải mã
Bảng mã
ẢNH NÉN
DCT
ngược
Hình 2.6 - Sơ đồ thuật toán giải nén ảnh JPEG
2.2.5.4 Phương pháp mã hóa thế hệ thứ hai
Phương pháp Kim tự tháp Laplace (Pyramide Laplace)
Phương pháp này là tổ hợp của 2 phương pháp: mã hoá thích nghi và biến đổi.Tỷ số nén là khá cao, thường là10 trên 1.Về nguyên tắc, phương pháp này dựa vào mô hình quan sát phân cấp của hệ thống quan sát của con người.
Bắt đầu từ ảnh gốc x(m,n) qua bộ lọc dải thấp ta thu được tín hiệu x1(m,n).Bộ lọc này được thiết kế để tính trung bình cục bộ dựa vào đáp ứng xung 2 chiều gần với đường cong Gauss.Bộ lọc này đóng vai trò "dự đoán" với sai số e1(m,n) tính bởi:
e1(m,n) = x(m,n) - x1(m,n)
Như vậy là mã hoá của x1(m,n) và e1(m,n) là tương đương với mã hoá của x(m,n).Với cách biến đổi như trên, e1(m,n) thuộc loại dải cao.Vì mắt người ít cảm nhận được tín hiệu với tần số cao nên ta có thể dùng một lượng bit ít hơn để mã hoá cho nó.Mặt khác, tín hiệu x1(m,n) thuộc loại dải thấp, nên theo lý thuyết lấy mẫu số mẫu sẽ ít hơn.
Quá trình này được lặp lại bằng cách dùng các bộ lọc thấp khác nhau và ta sẽ thu được các tín hiêụ xi(m,n), i =1, 2,...Với mỗi lần lặp, kích thước của ảnh sẽ giảm đi một lượng bằng fi/f i+1.Theo cách này, ta có một cấu trúc xếp chồng tựa như cấu trúc kim tự tháp mà kích thước giảm dần từ gốc đến đỉnh.Nhân chập Gauss được dùng ở đây có kích thước 5 x 5.Các tín hiệu ra sau đó được lượng hoá và mẫu hoá.
Phương pháp mã hoá dựa vào biểu diễn ảnh
Mã hoá dựa vào vùng gia tăng
Kỹ thuật vùng gia tăng thực chất là hợp các vùng có cùng một số tính chất nào đó.Kết quả của nó là một ảnh được phân đoạn giống như một ô trong trò xếp chữ (puzzle).Tuy nhiên, cần lưu ý rằng tất cả các đường bao thu được không tạo nên một ảnh giống ảnh gốc.
Việc xác định tính chất miền đồng nhất xác định độ phức tạp của phương pháp.Để đơn giản, tiêu chuẩn chọn ở đây là khoảng mức xám.Như vậy, miền đồng nhất là tập hợp các điểm ảnh có mức xám thuộc khoảng đã chọn.Cũng cần lưu ý thêm rằng, ảnh gốc có thể gồm có đường bao và các kết cấu (texture).Trong miền texture, độ xám biến đổi rất chậm.Do vậy, nếu không chú ý sẽ chia ảnh thành quá nhiều miền và gây nên các bao giả.Giải pháp để khắc phục hiện tượng này là dùng một bộ lọc thích hợp hay lọc trung vị.
Sau giai đoạn này, ta thu được ảnh phân đoạn với các đường biên kín, độ rộng 1 pixel.Để loại bỏ các đường bao giả, ta có thể dùng phương pháp gradient .Sau khi đã thu được các đường bao đúng, người ta tiến hành mã hoá (xấp xỉ) đường bao bởi các đường cong hình học, thí dụ bởi các đoạn thẳng hay đường cong.Nếu ảnh gốc có độ phân giải không thích hợp, người ta dùng khoảng 1.3 bit cho một điểm biên.
Phương pháp này thể hiện ưu điểm: đó là mô hình tham số.Các tham số ở đây là số vùng, độ chính xác mô tả.Tất nhiên tham số khoảng mức xám là quan trọng nhất vì nó có ảnh hưởng đến tỷ số nén.Một tham số cũng không kém phần quan trọng là số điểm của các đường bao bị coi là giả.Thường số điểm này không vượt quá 20 điểm.
Phương pháp tách - hợp
Cũng như đã chỉ ra trong chương Sáu, phương pháp tách-hợp khắc phục được một số nhược điểm của phương pháp phân vùng dựa vào tách vùng hay hợp vùng.Trong phương pháp mã hoá này, người ta thay tiêu chuẩn chọn vùng đơn giản ở trên bằng một tiêu chuẩn khác hiệu quả hơn.
Nguyên tắc chung của phương pháp là theo mô hình biên - texture.Nhìn chung đường biên dễ nhạy cảm với mắt người, còn texture thì ít nhạy cảm hơn.Người ta mong muốn rằng đường phân ranh giữa các vùng là đồng nhất với các đường bao.Lưu ý rằng, cần quyết định phân vùng một phần của ảnh sao cho nó không được vắt chéo đường bao.Đây là một tiêu chuẩn kiểm tra quan trọng.Các đường bao thường nhận được bởi các bộ lọc thông cao, đẳng hướng.
Để có thể quản lý các điểm thuộc một vùng một cách tốt hơn, tiêu chuẩn kiểm tra thứ hai cũng được xem xét đó là dấu: " các điểm nằm về một phía của đường bao có cùng dấu".
Nhìn chung, phương pháp gồm 2 giai đoạn.Giai đoạn đầu thực hiện việc tách vùng.Giai đoạn sau thực hiện hợp vùng.
Quá trình tách thực hiện trước.Người ta chia ảnh gốc thành các vùng nhỏ kích thước 9 x 9.Tiếp theo, tiến hành xấp xỉ các vùng ảnh đó bằng một đa thức có bậc nhỏ hơn 3.Sau quá trình tách, ta thu được trong một số vùng của ảnh, các hình vuông liên tiếp.Chúng sẽ tạo nên một miền gốc lớn và không nhất thiết vuông.Như vậy, trong trường hợp này phải xấp xỉ bằng rất nhiều các đa thức giống nhau.Rõ ràng là việc mã hoá riêng biệt các đa thức là điều kém hiệu quả và người ta nghĩ đến hợp các vùng để giảm độ dư thừa này.
Quá trình hợp được tiến hành như sau: Nếu 2 vùng có thể xấp xỉ bởi 2 đa thức tương tự, người ta hợp chúng làm một và chỉ dùng một đa thức xấp xỉ.Nếu mức độ thay đổi là thấp, ta sẽ có nhiều cặp vùng tương tự.Để có thể nhận được kết quả không phụ thuộc vào lần hợp đầu, người ta xây dựng đồ thị "Vùng kế cận".Các nút của đồ thị này là các vùng và các liên hệ biểu diễn mối không tương đồng.Sự liên hệ với mức không tương đồng thấp chỉ ra rằng 2 vùng cần hợp lại.
Sau bước hợp này, đồ thị được cập nhật lại và quá trình hợp được lặp lại cho đến khi tiêu chuẩn là thoả.Quá trình hợp dừng có thể quyết định bởi chất lượng ảnh nén hay một tiêu chuẩn nào khác.
Ta có thể thấy rằng phương pháp này khá phức tạp song bù lại nó cho tỷ số nén khá cao: 60 trên 1
Chương 3: TỔNG QUAN VỀ VIDEO
Dữ liệu video số bao gồm hình ảnh và âm thanh video được lưu trữ trong máy tính dưới dạng số.Cấu trúc phân cấp của video file như sau:
Hình 3.1 - Cấu trúc phân cấp của Video
3.1 Tổng quan về video
Video là tập hợp các khung hình, mỗi khung hình là một ảnh.Shot (lia) là cơ sở của video.Một lia là một đơn vị vật lý của dòng video, gồm các chuỗi các khung hình liên tiếp, không thể chia nhỏ hơn, ứng với một thao tác camera đơn.
Scene (cảnh) là các đơn vị logic của dòng video, một cảnh gồm các lia liên quan về không gian và liền kề về thời gian, cùng mô tả một nội dung ngữ nghĩa hoặc một tình tiết.
Khi phim được chiếu, các khung hình lần lượt được hiển thị ở tốc độ nhất định.Tốc độ thường thấy ở các định dạng video khác nhau là 30 và 25 hình/s.Như vậy một giờ video sẽ có số khung hình tương ứng là 108000 hoặc là 90000.Dù là video ở định dạng nào thì nó cũng có dung lượng rất lớn và nếu xử lý với tất cả các khung hình thì hiệu quả không cao.
Phân đoạn là quá trình phân tích và chia nội dung hình ảnh video thành đơn vị cơ sở gọi là các lia (shot).Việc lấy mẫu chính là chọn gần đúng một khung video đại diện cho mỗi lia (hoặc nhiều hơn tùy theo mức độ phức tạp của nội dung hình ảnh của lia) và được gọi là khung-khóa.
Khung-khóa là khung hình đại diện mô tả nội dung chính của shot.
Quá trình phân đoạn dữ liệu video tiến hành phân tích, phát hiện sự chuyển đổi từ lia này sang lia khác hay chính là sự phát hiện danh giới giữa các lia (đó chính là đo sự khác nhau giữa các khung hình liền kề).
3.2 Một số thuộc tính đặc trưng của video
Video có bốn đặc trưng chính: Color (màu), texture (kết cấu), shape (hình dáng), motion (chuyển động).
3.2.1 Color
Màu là một thuộc tính quan trọng của ảnh.Biểu đồ màu, biểu diễn sự phân bố màu, là một đặc trưng màu phổ biến nhất hiện nay.Biểu đồ màu không phụ thuộc vào sự quay, dịch chuyển ảnh cũng như chiều nhìn ảnh.Tính hiệu quả của nó lại phụ thuộc vào hệ màu và phương pháp định lượng được dùng.Có một vấn đề với biểu đồ màu là nó không biểu diễn thông tin về không gian phân bố các điểm ảnh, do đó hai ảnh có cùng biểu đồ màu có thể có nội dung rất khác nhau.
Hình 3.2 - Các ảnh rất khác nhau nhưng có cùng biểu đồ màu
3.2.2 Texture
Đây là một đặc trưng quan trọng của bề mặt, nơi xảy ra việc lặp lại mẫu cơ bản.Có hai dạng biểu diễn texture phổ biển: biểu diễn dạng ma trận đồng thời và biểu diễn Tamura.Ma trận đồng thời mô tả hướng và khoảng cách giữa các điểm ảnh, nhờ đó các thống kê có nghĩa có thể được trích chọn.Ngược lại, người ta thấy rằng entropi và mô men chênh lệch nghịch đảo lại có khả năng phân biệt tốt nhất.Biểu diễn Tamura được thúc đẩy nhờ các nghiên cứu về tâm lý trong việc thu nhận trực giác của con người và nó bao gồm các đại lượng đo tính thô, độ tương phản, hướng, tính trơn, tính cân đối và độ ráp.Các đặc trưng Tamura rất hấp dẫn trong việc hiểu nội dung ảnh vì nó biểu đạt trực quan.Ngoài ra còn có một số các dạng biểu diễn khác như trường ngẫu nhiên Markov, biến đổi Gabor, biến đổi gợn sóng,…
3.2.3 Shape
Các đặc trưng hình dáng có thể được biểu diễn sử dụng phân tích hình dáng truyền thống như bất biến mô men, mô tả Fourier, mô hình học tự động quay lui và các thuộc tính hình học.Các đặc trưng này có thể được phân chia thành đặc trưng toàn cục và đặc trưng cục bộ.Đặc trưng toàn cục là đặc trưng thuộc tính thu được từ toàn bộ hình dáng ảnh, chẳng hạn như chu vi, tính tròn, mô men trung tâm, hướng trục chính...Đặc trưng cục bộ là đặc trưng thu được từ việc thao tác với một phần của ảnh, không phụ thuộc vào toàn bộ ảnh.
3.2.4 Motion
Hình 3.3 - Các thao tác camera
Motion là thuộc tính quan trọng của video.Thông tin về chuyển động có thể được sinh ra bằng các kỹ thuật ghép khối hoặc luồng ánh sáng.Các đặc trưng chuyển động như mô men của trường chuyển động, biểu đồ chuyển động hoặc là các tham số chuyển động toàn cục có thể được trích chọn từ vectơ chuyển động.Các đặc trưng mức cao phản ánh di chuyển camera như quét camera (pan), nghiêng (tilt), phóng to (zoom in), thu nhỏ (zoom out) cũng có thể được chọn.
Chương 4: CÁC PHƯƠNG PHÁP XÁC ĐỊNH ĐỘ ĐO TƯƠNG TỰ TRONG XỬ LÝ ẢNH
4.1 Giới thiệu
Trong thời gian qua một số lượng rất lớn các thư viện số đã được xây dựng nhờ vào giá thấp của các thiết bị lưu trữ số và sự tăng trưởng mau lẹ của công nghệ thông tin.Để sử dụng hiệu quả hệ thống thư viện đồ sộ này cần thiết phải xây dưng các công cụ đủ mạnh để tìm kiếm và phân tích.Hệ thống tự động nhận về ảnh từ một cơ sở dữ liệu bằng việc sử dụng các miêu tả bằng văn bản đã được phát triển từ những năm 1970.Những hệ thống này sử dụng đặc trưng ảnh cấp thấp như màu sắc, hình dạng và texture để biểu diễn nội dung ảnh.Ngoài ra, chuẩn MPEG-7 định nghĩa một tập hợp các mô tả trực quan cho nội dung ảnh nhằm đáp ứng yêu cầu của các ứng dụng khác.
Nhiều nghiên cứu đã được tiến hành trên cơ sở đặc trưng màu, ký thuật phổ biến nhất để biểu diễn các thông tin màu là histogram.Rất nhiều độ đo tương tự đã được đưa ra trong các tài liệu để so sánh phân bố màu sắc, giống như histogram intersection, L2-norm color histogram.Hơn nữa, nhiều đặc trưng màu khác cũng đã được sử dụng để mô tả màu sắc, bao bao gồm color moment và color sets.
4.2 Phương pháp Histogram dòng, cột
Đây là một trong các phương pháp đơn giản nhất để xác định độ đo tương tự giữa hai ảnh mà sử dụng các đặc trưng về màu sắc.
Phương pháp thực hiện như sau: trên từng dòng (cột) tương ứng của hai ảnh đầu vào, thực hiện xác định một hàm phân bố màu sắc cho dòng (cột) đó, tiếp theo tiến hành so sánh hai hàm đó với nhau kết quả thu được là một hệ số tương quan tương ứng cho dòng (cột).Trên cơ sở các hệ số tương quan của dòng (cột) thu được thực hiện phân tích và đánh giá để đi đến kết quả cuối cùng là rút ra được một độ đo tương tự cho hai ảnh đầu vào, phương pháp đơn giản nhất là lấy hai giá trị trung bình cộng tất cả các độ tương quan thu được trên dòng và cột sau đó xử lý theo một tỉ lệ xác định (thường là theo kích thước của ảnh) để thu về kết quả là độ đo tương tự cần tìm.
Thuật toán để xác định Histogram theo dòng (cột):
HisRow[ImageHeight][255] = [0]; //giả sử ảnh là ảnh xám.
For ( i = 0; i < ImageHeight; i++)
For ( j = 0; j < ImageWidth; j++)
{
HisRow[i][I(i,j)] ++; //I(i,j) là giá trị màu của pixel ở vị trí (i,j)
}
Đây là một phương pháp dựa trên đặc trưng hết sức cơ bản của ảnh số đó là đặc trưng màu, do đó nó đáp ứng được yêu cầu về độ chính xác trên phương diện màu sắc.Ưu điểm lớn nhất của phương pháp này là dễ cài đặt, dễ hiểu phù hợp cho các tìm hiểu ban đầu về vấn đề xác định độ đo tương tự giữa hai ảnh số.Tuy nhiên nó có một nhược điểm là có độ chính xác không cao mà trong nhiều trường hợp kết quả thu được không thể đánh giá được một các trực quan (đây là điều kiện tiên quyết trong thao tác với ảnh số) .Việc cài đặt phương pháp này trong các ứng dụng là hết sức dễ dàng, chính vì lẽ đó nên nó được được khai thác và sử dụng trong các ứng dụng xử lý ảnh từ rất lâu.Trong giai đoạn hiện nay với sự phát triển mạnh mẽ của xử lý ảnh cũng như sự hỗ trợ mạnh mẽ của các thiết bị tiên tiến phương pháp này đã trở nên ko còn phù hợp nữa, nó đòi hỏi phải có một phương pháp phức tạp hơn và đem lại độ chính xác cao hơn.
4.3 Mô hình Cognitive Visual Attention (CVA)
Mô hình Cognitive Visual Attention (CVA) được mô tả ở đây là một cải tiến mới nhất của mô hình Visual Attention (được đưa ra bởi F.W.M.Stentiford) dựa vào độ tương tự của các cặp láng giềng của hai mẫu A và B.Phương pháp so sánh ở đây hết sức đơn giản và linh hoạt, không phụ thuộc vào một đặc trưng cụ thể nào do đó có thể áp dụng cho rất nhiều cơ sở dữ liệu ảnh khác nhau.
Xét một tập hợp a trên mẫu A tương ứng với một vị trí x trong A trong không gian n chiều (x1,x2,x3,…,xn), trong đó:
x = (x1,x2,x3,…,xn) và a = (a1,a2,a3,…,an)
Định nghĩa một hàm F sao cho a = F(x) với mọi a.Điều đó có nghĩa là x chỉ tồn tại nếu a tồn tại.
Xác định một tập láng giềng Nx của x sao cho:
{x’ Î Nx nếu |xi – xi’| > e " i}
Chọn một tập hợp m pixel ngẫu nhiên Sx trong Nx sao cho:
SA = {x’1,x’2,x’3,…,x’m} và F(x’i) phải được định nghĩa
Chọn một vị trí y tương tứng là tập b trên mẫu B mà hàm F đã được định nghĩa sao cho thỏa mãn điều kiện sau:
|xi – yi| ≤ s
Sau đó chọn ngẫu nhiên một tập hợp SB = {y’1, y’2,y’3,…,y’n} sao cho:
x – x’i = y – y’i " i
Khi đó gọi SA tương tự SB nếu
|Fj(x) – Fj(y)| ≤ dj và |Fj(xi) – Fj(x’i)| ≤ dj " i,j
Hình 4.1 - Tập hàng xóm ở vị trí x giống với vị trí y
Như vậy, sẽ xác định một tương tự nếu tất cả các giá trị màu (giá trị j) của các pixel tương ứng trong SA và SB là gần nhau.Độ tương tự của một pixel x được tăng lên mỗi lần một trong M tập SA tương ứng với một tập SB của một vài điểm y trên mẫu B.Điều đó có nghĩa là độ tương tự này sẽ rất lớn nếu M được đặt giá trị lớn.Trong hình 1, m = 3 pixel x’ được chọn trong tập láng giềng của x trên mẫu A và tượng tự trên mẫu B cũng xác định được 3 pixel y’ là láng giềng của y trên mẫu B.Các pixel phải xử lý 3 tham số, mà F(x’) = a = (r, g, b) và hàng xóm của pixel thứ hai (y) tương ứng với pixel thứ nhất nếu các tham số màu của toàn bộ m + 1 pixel tương ứng có giá trị nhỏ hơn từng dj.
Cuối cùng, gộp tất cả độ tương tự từ tất cả các điểm ảnh trong A được xác định là CAB giữa 2 ảnh A và B qua công thức:
Một tham số s được đưa ra để giới hạn vùng trên B mà trong đó các vị trí của y được lựa chọn ngẫu nhiên. s = 3 định nghĩa vùng này ở ví dụ trên.Điều này đã làm cải thiện rất nhiều hiệu quả của thuật toán trong những trường hợp mà ta biết chắc rằng sự tương ứng giữa 2 vùng ảnh được dịch chuyển đi không nhiều hơn s pixel.
Một vài kỹ thuật phân tích ảnh thực hiện các phép toán so sánh ảnh bằng việc sử dụng các “mảnh” (patche) đó là các láng giềng kề nhau trong đó các giá trị (values) của các pixel được tận dụng trong tính toán.Các “mảnh” là tương ứng khi độ tượng tự vượt qua một ngưỡng cho trước.Hướng tiếp cận này không thể đem lại độ chính xác cao trong trường hợp các chi tiết ảnh nhỏ hơn kích thước của các “mảnh”.Việc chọn lựa các láng giềng một cách ngẫu nhiên như trong phương pháp này có thể khắc phục được vấn đề này.
4.4 Độ đo tương tự có thể học (Trainable similarity measure)
Đầu tiên, độ đo tương tự Sr(I, J) được xác định dựa trên việc tính toán hệ số tương quan giữa 2 ảnh cùng kích thước I và J:
Trong đó, ký hiệu và biểu diễn cường độ của pixel thứ i tương ứng của các ảnh và và biểu diễn giá trị trung bình tương ứng của các cường độ của ảnh.
Độ tương tự S(I, J, R) được đề nghị dựa trên sự tương xứng cục bộ của ảnh trong tập hợp các vùng ảnh R.Mỗi vùng ảnh r Î R được định nghĩa trong hệ tọa độ của ảnh I.Độ tương tự cục bộ s(I, J, r) giữa các vùng ảnh tương ứng r(I) và r(J) có thể được xác định, chẳng hạn, theo hệ số tương quan (3.1).Độ tương tự tổng thể S(I, J, R) la một hàm của tập hợp các độ tương tự cục bộ của các vùng r.Ở đây, để làm tăng tính chính xác của độ đo tương tự tổng thể trước các sai lệch cục bộ chúng ta sử dụng một điều kiện số học (arithmetic mean):
Tập hợp các vùng R được xác định cụ thể đối với mỗi nguyên mẫu (prototype) trong suốt quá trịnh học tương ứng với tập dữ liệu Tr = {(I1, w(I1)), … , (IN, w(IN))} với N ảnh, với w(I) biểu diến một lớp của ảnh I.
Quá trình học độ đo tương tự với đối với một ảnh nguyên mẫu (prototype image) Pr như sau: bắt đầu từ một tập hợp các vùng có thể chấp nhận Rinit , một tập con R được chọn tùy ý theo tính dễ phân tách (separability) của lớp (class) của đối tượng nguyễn mẫu (prototype object) w(Pr) từ tất cả các lớp liên quan trong tập Tr.Tính dễ phân tách tiêu chuẩn được chấp nhận là:
Sự tách biệt giữa các đối tượng học (training object) mục tiêu (target) và không mục tiêu (non-target) dựa trên độ tương tự S(I, Pr, R).Các ký hiệu T và NT biể diễn tập hợp của đối tượng học mục tiêu và không mục tiêu:
Ký hiệu và biểu diễn điều kiện mean và sự sai khác của giá trị tương tự S(Ii, Pr, R), Ii Î T (S(Ij, Pr, R), Ij Î NT).
4.5 Multivariate Two-sample problem
Nghiên cứu này sử dụng một phương pháp kiểm tra không tham số kết hợp với “Multivariate Tow-Sampe Problem” để biểu diễn màu sắc ảnh tương tự.Phương pháp test cụ thể là phương pháp kiểm tra Wald-Wolfowitz và so sánh hai ảnh mẫu phân biệt dựa trên việc sử dụng MST (Minimal Spanning Tree) – cây khung nhỏ nhất.
Định nghĩa: một đồ thị (graph) là một cấu trúc biểu diễn liện hệ dữa các dữ kiện với nhau.Bao gồm tập hợp các node V={Vi}i=1:N và tập hợp các liên kết E={Eij}i≠j giữa các node gọi là các cung, độ đo di của một node la số lượng các cung nối với node đó.Khi đó một trọng số eij được gán cho mỗi cung, trong trường hợp đồ thị vô hướng thì eij = eji .Một cây (tree) là một đồ thị không có kết nối vòng tròn.Một spanning tree T của một đồ thị trọng số G(V,E) được kết nối từ các đồ thị con G(V,E) sao cho: (i) chứa tất cả các node của G(V,E) và (ii) không chứa vòng.MST là một cây khung chứa (N-1) cung, sao cho tổng trọng số các cung là nhỏ nhất.
Áp dụng định nghĩa trên để mô tả màu của một ảnh : N pixel được chọn và trêm cơ sở tương ứng với vector RGB những pixel này được biểu diễn bằng 1 điểm trong R3.Từng điểm này sau đó được thể hiện như là một node của đồ thì gốc (kết nối đầy đủ), và khoảng cách Euclidean được tính cho trọng số tướng ứng cho các cung. Cuối cùng, sử dụng một thuật toán chuẩn để xây dựng lên MST và dùng như một mô tả chính xác của biến đổi màu trong ảnh.Như vậy với 2 ảnh ban đầu, sự khác nhau về nội dung màu của chúng sẽ được biến đổi thành so sánh 2 đồ thị MST tương ứng.Quá trình so sánh sẽ đánh giá dựa trên một hằng số xác định.Phương pháp kiểm tra Walt-Wolfowitz (WW-test) đề xuất sử dụng một hằng số R như sau:
trong đó :
+ m, n : kích thước của ảnh so sánh.
+ N = m + n
+ C : số các cung trong cây MST
Hình 4.2 - WW-test sử dụng 15+15 pixel được chọn
(a) hai ảnh bất tương tự với R = 4 (b) hai ảnh tương tự R = 11
Chương 5: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
5.1 Phân tích
5.1.1 Đặt vấn đề
Bài toán “tìm kiếm theo nội trong file video” được mô tả như sau: cho trước một file video chứa đựng hình ảnh cũng như hoạt động của các đối tượng (bao gồm cả con người, đồ vật, phương tiện....), với một dữ liệu đầu vào là một đối tượng xác định, đối tượng có thể được mô tả bằng nhiều cách có thể là hình ảnh về đối tượng hay những mô tả về các đặc điểm của đối tượng bằng văn bản....Yêu cầu là phải tìm trong đoạn video đó đối tượng xuất hiện ở những frame nào với một độ chính xác (ngưỡng) cho trước.
Bài toán có thể được mô hình hóa như sau:
Đoạn Video
đối tượng
Tìm kiếm
Frame
đối tượng
Hình 5.1 - Mô hình bài toán
5.1.2 Phân tích bài toán
Nếu nhìn nhận bài toán ở khía cạnh con người thì có thể thấy đây là một bài toán không có gì là phức tạp, rõ ràng việc nhận biết một đối tượng trong các đoạn video đối với mắt người là hết sức đơn giản.Con người nhận biết đối tượng nhờ vào tri thức của họ về đối tượng đó, các định nghĩa được hình thành trong trí óc con người khi họ tiếp xúc với đối tượng lần đầu tiên và được củng cố trong những lần tiếp xúc sau. Khi có yêu cầu tìm kiếm đối tượng nào đó, con người sẽ hình dung trong đầu các đặc trưng của đối tượng (hình dáng, màu sắc, kích thước ...), cuối cùng khi duyệt qua nơi tìm kiếm họ chỉ việc tiến hành đối sánh các đối tượng thu được với đối tượng cần tìm (đã hình dung trong đầu) để đưa ra kết luận.
Tương tự như vậy, hướng giải quyết bài toán cũng thực hiện theo quy trình: nhận thức đối tượng, tiến hành so sánh đối tượng đó với các đối tượng xác định được trong đoạn video (từng frame).
Ở đây có hai vấn đề lớn cần giải quyết đó là nhận thức đối tượng và so sánh đối tượng.Nhận thức đối tượng quá trình tìm hiểu các thông tin về đối tượng bao gồm các đặc trưng về màu, về hình dáng, kết cấu v.v...để cuối cùng hình thành lên một định nghĩa chính xác về đối tượng đó giúp phân biệt với các đối tượng khác sao cho bảo đảm tính cá biết của đối tượng.Ví dụ như đối tượng là một bông hoa về mặt hình dáng thường bao gồm một đoạn dài (cuống) nằm trên là một vòng tròn (cánh hoa), kết hợp với đó là màu xanh của cuống và các màu đỏ, vàng của cánh hoa v..v...quá trình này phải được thực hiện hết sức cẩn thận vì rất dễ xảy ra hiện tượng nhầm lẫn hay hiểu sai về đối tượng, lý do là đối tượng thường được lồng ghép bởi rất nhiều chi tiết, đôi khi các đối tượng khác nhau lại chứa đựng các chi tiết giống nhau hoặc bản thân các chi tiết đó cũng không được phân biệt rõ ràng.Tiếp theo, sau khi đã nhận thức được đối tượng chúng ta tiến hành so sánh các đối tượng với nhau, chính vì lý do là đối tượng có rất nhiều thông tin nên vấn đề só sanh các đối tượng trở nên rất khó khăn.
Nếu chỉ dựa vào một thông tin nào đó về đối tượng để so sánh rồi đưa ra đánh giá đối tượng đó có giống nhau hay không thì kết quả đem lại sẽ có tỉ lệ thất bại rất cao.Đối tượng tương tự nhau về thông tin này chưa chắc đã giống nhau về mặt thông tin khác đôi khi có thể khác nhau hoàn toàn.Ví dụ như sử dụng phương pháp so sánh dựa trên đặc trưng về màu sẽ đem lại một kết quả sai lệch hoàn toàn trong trường hợp hai đối tượng có hình dáng và kết cấu giống nhau trong khi phân bố màu sắc lại có nhiều nét tương đồng...Vì vậy, cần phải có một phương pháp so sánh sao cho kết hợp được tất cả các thông tin đó lại với nhau nhằm thu được những kết luận với sai số cho phép.
Một vấn đề hết sức quan trọng khác trong bài toán này đó là vấn đề xác định ngưỡng.Đây là một yếu tố có ảnh hưởng trực tiếp đến hiệu quả của quá trình tìm kiếm.Nếu ngưỡng được chọn lựa phù hợp thì không những làm tăng hiệu suất của quá trình tìm kiếm mà còn giảm rất nhiều các chi phí không cần thiết phát sinh trong quá trình tìm kiếm.Ngưỡng ở đây không phải là một con số cố định, hoặc có thể rút ra chung cho tất cả các bài toán thuộc lớp này, ngưỡng phải được xác định tùy theo từng điều kiện cụ thể của mỗi bài toán, ngưỡng được quyết định bởi bản thân đối tượng tìm kiếm (về kích thước, màu sắc, phân bố kết cấu...) và bản thân đoạn video, nếu đoạn video có chất lượng cao đảm bảo khả năng tìm kiếm đối tượng với độ chính xác cao thì ngưỡng có thể được đẩy lên cao, nhưng ngược lại với các đoạn video chất lượng thấp hoặc chịu ảnh hưởng rất nhiều của nhiễu môi trường không thể kiểm soát thì ngưỡng cần phải được đẩy xuống.
Như vậy lại có một vấn đề mới đặt ra trong trường hợp này là nếu ngưỡng bị đẩy xuống thấp quá rất dễ gây hiểu lầm, có nghĩa là quá trình tìm kiếm đã chở nên bớt khắt khe hơn, khi đó đối tượng được coi là giống nhau đã không được kiểm soát kỹ làm cho kết quả thu về có thể không theo được mong muốn, trường hợp nảy chỉ có thể đáp ứng được tính đủ của quá trình tìm kiếm nhưng lại gây lên sự dư thừa thông tin.Để giải quyết vấn đề này cần phải có thêm sự kết hợp của một số ký thuật hỗ trợ khác chẳng hạn như lọc nhiễu trước khi xử lý, hoặc phối hợp hỗ trợ của con người.
5.2 Kỹ thuật đề xuất
Theo như các phân tích ở trên thì kỹ thuật để xử lý bài toán cần phải đáp ứng được các yếu tố: phải đảm bảo quá trình so sánh đối tượng phải được thực hiện trên toàn bộ các thông tin đặc trưng của đối tượng nhằm tránh hiểu sai, tìm thiếu đối tượng; phải có một phương pháp chọn ngưỡng phù hợp để làm tăng tính khả dụng của ngưỡng qua đó làm tăng hiệu suất của quá trình; ngoài ra còn phải phù hợp với điều kiện kỹ thuật hiện này về phần cứng cũng như các điều kiện về mặt thời gian.
Có rất nhiều kỹ thuật đã được nghiên cứu, mỗi kỹ thuật lại phù hợp với từng bài toán cụ thể chẳng hạn như kỹ thuật dùng histogram, kỹ thuật phát hiện đối tượng trên cơ sở phát hiện biên, ký thuật sử dụng mạng noron, kỹ thuật trừ nền, kỹ thuật phân hoạch dựa vào không gian....
Trong khuôn khổ của đồ án tốt nghiệp này, em xin mạnh dạn đề xuất một kỹ thuật khá mới đó là kỹ thuật tìm kiềm đối tượng trên cơ sở xác định độ đo tương tự có tên là mô hình Cognitive Visual Attention (CVA) kết hợp với định hướng của kỹ thuật Histogram dòng, cột. Việc kết hợp giữa 2 phương pháp này nhằm tận dụng các ưu điểm của từng phương pháp nhằm hạn chế các nhược điểm nếu sử dụng từng kỹ thuật, trong đó mô hình CVA giữ vai trò chủ đạo, quyết định đến thành công của bài toán. Đây là một kỹ thuật được sử dụng khá nhiều trong giai đoạn gần đây đặc biệt đã được áp dụng trong lĩnh vực truy tìm dấu vân tay trong điều tra tội phạm.
Kỹ thuật này có thể được môt tả ngắn gọn lại như sau: có hai vùng ảnh A, B cần đem so sánh với nhau.Với mỗi pixel x trên ảnh A chọn ra một tập ngẫu nhiên n láng giềng Sx nằm trong vùng láng giềng e, để so sánh với x trên B cũng chọn ngẫu nhiên các điểm y tương ứng cùng với vùng láng giềng của nó Sy sau tiến hành so sanh 2 vùng láng giềng này cho nhau theo một ngưỡng d nào đó.Kết quả của phép so sánh A, B thu được qua quá trình tính toán như trên với một số lượng đủ lớn pixel x trong A (chi tiết xin xem thêm phần 4.2).
Kỹ thuật này có thể được coi là kỹ thuật dựa trên láng giềng, đây là một yếu tố hết sức quan trọng đảm bảo thành công của nó, lý do là việc sử dụng láng giềng đảm bảo việc nhìn nhận từng pixel trong mối quan hệ của nó với các pixel xung quanh.
a) b) c)
Hình 5.2 - pixel x và các tập láng giềng
a) Láng giềng bốn b)Láng giềng c) Láng giềng xa (e = 2)
Khái niệm láng giềng của một pixel x trong ảnh số được định nghĩa là: tập hợp các pixel nằm xung quanh pixel p theo một khoảng cách e nhất định.Trong đó tập láng giềng với e = 1 là được sử dụng nhiều nhất, đây là tập hợp chứa các láng giềng nằm ngay gần kề mang ý nghĩa quyết định nhất tới khả năng ảnh hưởng của láng giềng tới pixel trung tâm (pixel p).Trong xử lý ảnh cũng chia tập này thành 2 tập con là láng giềng 4 và láng giềng 8 được định nghĩa như sau: nếu pixel p có vị trí là (x,y) trong ảnh thì láng giềng 4 là tập hợp các pixel {(x-1,y-1), (x-1,y+1), (x+1,y+1), (x+1,y-1)} và láng giềng 8 là tập hợp các pixel {(x-1,y-1), (x-1,y), (x-1, y +1), (x,y-1), (x,y+1), (x+1,y-1),(x+1,y),(x+1,y+1)}.
Trong kỹ thuật này để nâng cao hiệu suất của quá trình, tập láng giềng với e > 1 đã được đề xuất sử dụng, với e bất kỳ thì số lượng các pixel láng giềng trong tập láng giềng N sẽ là:
||N|| = (2*e + 1)2
Tuy nhiên, nếu sử dụng toàn bộ tập láng giềng N mà với e đủ lớn sẽ có thể làm tràn bộ nhớ trong quá trình tính toán gây lãng phí.Do vậy, kỹ thuật này đã đề xuất một cải tiến, đó các láng giềng cũng được lựa chọn ngẫu nhiên một tập hợp nào đó (chứ không phải toàn bộ tập các láng giềng bao xung quan pixel đang xét), tự quá trình này đã xây dựng lên một cấu trúc các pixel dùng cho so sánh một pixel mà lại rất riêng, ngâu nhiên và hết sức khách quan kết hợp với việc lựa chọn độ lớn của tập hợp các láng giềng này cũng giúp đẩy mạnh tính hiệu quả của kỹ thuật.
Hình 5.3 - lựa chọn ngẫu nhiên một số các láng giềng trong
tập láng giềng với e = 2
Hai pixel x và y khi đã có sự tương quan xác định về hai tập láng giềng Sx và Sy có nghĩa là chúng đã bao hàm được một phần cấu trúc của đối tượng đang so sánh như vậy giúp đảm bảo tính cấu trúc của đối tượng được so sánh, bên cạnh sự đảm bảo chính xác về giá trị màu.
Image A
Image B
s
Hình 5.4 - đối tượng ở ảnh A đã được dịch chuyển đi s pixel trong ảnh B
Kỹ thuật này cũng đề suất việc sử dụng một tham số s, tham gia trong quá trình chọn lựa pixel y tương ứng cho pixel x.Tham số s thể hiện độ dịch chuyển của các pixel tương ứng có thể có giữa 2 vùng ảnh A, B, ở đây đã có một sự đoán nhận dựa trên kinh nghiệm nghĩa là bằng kinh nghiệm, trước khi sử dụng kỹ thuật này người ta đã dự đoán rằng đối tượng trong B sẽ chỉ có thể bị dịch chuyển đi s pixel, do vậy quá trình so sánh tiếp theo cần thiết chỉ lên tiến hành trong một độ lệch đề nghị là s pixel.
Đây là một yếu tố có ý nghĩa cực kỳ quan trọng làm tăng rất nhiều hiệu quả cũng như tốc độ của quá trình tính toán mà thêm vào đó nó còn thể hiện tính tri thức của kỹ thuật.Để trợ giúp quá trình so sánh, nâng cao hiệu quả của ký thuật hằng số d đã được sử dụng khi thực hiện so sánh hai tập láng giềng Sx và Sy sao cho: |Sx – Sy| < d nghĩa hai tập láng giềng này để được coi là giống nhau thì từng pixel trong độ phải có độ khác biệt về màu sắc nhỏ hơn d (nếu là ảnh 24 bit thì từng giá trị r,g,b phải được so sánh riêng biệt và tương ứng có một giá trị d riêng).
Dưới đây là một ví dụ của việc ứng dụng mô hình CVA trong lĩnh vực truy tìm vân tay, với các tham số là : e = 2 , M = 50, m = 3, s = 5, d = 20
Hình 5.5 - mẫu ảnh của 9 vân tay
Kết quả tính toán của quá trình áp dụng mô hình CVA cho 9 mẫu trên được mô tả trên bảng sau:
Hình 5.6 – độ đo tương tự giữa cá mẫu trong tập hợp 9 vân tay
5.3 Thiết kế hệ thống
Với các phân tích như trên hệ thống “tìm kiếm đối tượng trong file video” sẽ được thiết kế như sau:
Hoạt động:
Input: file avi, đối tượng cần tìm kiếm, ngưỡng
Output: các frame có chứa các đối tượng giống đối tượng cho trước
Về cơ bản thuật toán của hệ thống sẽ được mô tả theo như lưu đồ sau:
Bắt đầu
Duyệt hết các frame
Kết thúc
yes
yes
no
no
- File video
- Đối tượng cần tìm
- Ngưỡng
Duyệt lần lượt các frame trong đoạn video
Thêm frame vào danh sách kết quả
Phân tích histogram dòng cột
Xác định độ đo tượng tự theo mô hình CVA
So sánh với ngưỡng
Các bước thực hiện thuật toán:
Bước 1:
- Đọc file video đầu vào.
- Đọc ảnh chứa đối tượng.
- Chọn đối tượng cần tìm kiếm.
- Lựa chọn các tham số cho mô hình CVA.
- Đề xuất ngưỡng.
Bước 2:
- Duyệt qua từng frame của file video.
- Với mỗi frame thực hiện phân vùng, chọn vùng chứa đối tượng.
Bước 3:
- Tiến hành phân tích histogram, so sánh với đối tượng truy vấn.
- Nếu đáp ứng được ngưỡng cho trước => đưa đối tượng vào tập đối tượng ứng viên và ngược lại.
Bước 4:
- Trong tập các đối tượng ứng viên thực hiện phân tích so sánh với ảnh truy vấn theo mô hình CVA.
- Xác định độ đo tương tự và so sánh với ngưỡng.
- Cơ chế điều chình ngưỡng .
- Kết nạp frame hiện tại vào tập frame kết quả nếu đáp ứng được ngưỡng và ngược lại.
Bước 5:
- Thu được tập kết quả.
- Kết hợp với đánh giá của người sử dụng để rút ra các điều chình cần thiết.
Một số điều kiện tiền đề trong trường hợp của đồ án:
+ Dữ liệu đầu vào sẽ là một file video và một file ảnh, yêu cầu phải có kích thước giống nhau.File ảnh có thể chính là một frame trong file video, điều này đảm bảo chất lượng của file video và chất lượng ảnh đầu vào là như nhau, đáp ứng tính đồng nhất của dữ liệu đầu vào.Hơn nữa nó còn cho phép đảm bảo rằng ít nhất trong kết quả trả về của hệ thống phải chứa chính frame được trích ra đó, đây cũng là một cơ sở để tạo ngưỡng đề nghị.
+ Sau khi đã có một ảnh đầu vào, hệ thống phải cho phép người sử dụng chọn lựa các đối tượng trong đó một cách tùy ý, đương nhiên vùng mà ngưởi sử dụng chọn ra đó phải chứa ít nhất một đối tượng , hơn nữa phải chọn sao cho tầm ảnh hưởng của nền trong vùng đó là nhỏ nhất, nghĩa là đối tượng phải chiếm đa số trong vùng đó.Ngoài ra đối tượng cũng phải được chọn sao cho về màu sắc đối tượng phải đặc biệt nổi bật so với nền mà đối tượng nằm trên đó nghĩa là phải có được một sự phân biệt rõ ràng giữa các pixel trong ảnh thuộc về vật với các pixel thuộc về nền.Nếu không làm tốt vấn đề này có thể sẽ dẫn đến hậu quả là thay vì thực hiện tìm kiếm đối tượng hệ thông sẽ bị chuyển hướng lạm dụng sang thực hiện với nền.Điều này sẽ làm sụp đổ hoàn toàn hoạt động của hệ thống.
Hình 5.7 – khoanh vùng đối tượng
+ Đặc thù của file video là một chuỗi các khung hình diễn ra liên tiếp có mối liên hệ với nhau về mặt nội dung theo các dòng sự kiện diễn biến theo thời gian.Mỗi dòng sự kiện đó sẽ ánh xạ thành một phân đoạn của file video.Trong từng phân đoạn đó, các đối tượng xuất hiện sẽ mang tính bảo toàn cao và xuất hiện theo một chuỗi diễn biến nào đó.Tận dụng điều này, việc tìm kiếm có thể thực hiện chia nhỏ cho từng phân đoạn nhất định, ứng với từng phân đoạn, hệ thống sẽ thực hiện tùy biến các tham số để có được một kết quả mong muốn trong từng trường hợp cụ thể.
Nếu nhìn nhận kỹ thuật một cách khái quát, có thể hình dung quá trình so sánh là quá trình tìm kiếm các pixel tương ứng giữa hai ảnh của hai đối tượng được kỳ vọng là giống nhau.Đặc trưng cho pixel trong ảnh số, về mặt không gian, là vị trí của chúng (location) trong ảnh, được thể hiện bằng một cặp số (x,y) cho biết vị trí của pixel về chiều ngang và chiều dọc so với tọa độ gốc là góc trái trên của ảnh.Bởi vì đối tượng không phải là bất biến, cùng đối tượng nhưng ở từng thời điểm, từng vị trí lại có một sự sai khác nhất định.Cũng như vậy các pixel tương ứng của hai đối tượng giống nhau hầu như không nằm cùng vị trí mà nó đã có sự dịch chuyển sang một vị trí khác thậm chí còn có một sự sai khác nhất định về màu.
Với những phân tích như trên, mô hình CVA ứng dụng trong đồ án này sẽ được thiết kế như sau:
+ Đối tượng tìm kiếm sẽ được khoanh vùng từ một ảnh cho trước (đề nghị được trích ra từ một frame của file video)
+ Tham số s được đặt bằng 5 nghĩa là dự đoán trước đối tượng đó sẽ được tìm kiếm trong các frame với độ dịch chuyển cho phép là 5 pixel.Hay nói cách khác mỗi pixel của đối tượng bạn đầu sẽ được tìm kiếm trong phạm vi bán kính 121 pixel.
+ Tham số e dùng trong chọn láng giềng được đặt là 2 như vậy tập láng giềng sẽ bao gồm 25 pixel bao quanh mỗi pixel được tìm kiếm.
+ Tham số m là số lượng các pixel láng giềng ngẫu nhiên được trích ra từ tập 121 láng giềng được đặt là 5.Đây là một con số đủ nhỏ để đẩy nhanh tốc đến tốc độ tính toán nhưng vẫn đảm bảo tính đầy đủ kết quả thu về.
+ Tham số d được đặt là 0 trong trường hợp thử nghiệm chương trình với một đoạn video lý tưởng (quay trực tiếp màn hình máy tính), và đặt bằng 12 trong trường hợp thử nghiệm với một đoạn video thực tế.Đây là con số đã được điều chỉnh trong quá trình thử nghiệm hệ thống.
+ Tham số M được đặt là 50, nghĩa là với mỗi pixel x sẽ thực hiện lựa chọn 50 lần ngẫu nhiên các láng giềng.Số lượng này đủ lớn để đáp ứng tính toàn vẹn về mặt cấu trúc của đối tượng.
Chương 6: THỰC NGHIỆM
6.1 Giới thiệu chương trình
Sau những tìm hiểu và phân tích nội dung đồ án như đã trình bày ở trên, em đã đưa ra được một chương trình demo với chức năng đáp ứng được các yêu cầu chính của đồ án. Chương trình được viết bằng ngôn ngữ lập trình Visual C++ 6.0, có giao diện chính như sau:
Hình 6.1 - Giao diện chính của chương trình
Luồng chức năng chính của chương trình là người sử dụng mở 1 file avi và 1 file ảnh từ thiết bị lưu trữ, sau đó chọn đối tượng trong ảnh đã mở, tiếp theo là có thể chỉnh sửa một số tham số cho phương pháp CVA, cuối cùng chương trình sẽ thực hiện duyệt qua toàn bộ file avi thực hiện tìm kiếm nội dung của từng frame và trả về các frame có chứa đối tượng cần tìm, kết quả sẽ được lưu trong một danh sách cho phép người sử dụng duyệt lại. Ngoài ra chương trình cũng cho phép người sử dụng playback file avi theo ý muốn.
6.2 Các chức năng chính của chương trình
6.2.1 Giao diện chính
Chương trình có một giao diện chính duy nhất, được chia làm nhiều phần, mối phần giữ một chức năng riêng:
đối tượng tìm kiếm
Querry image
frame kết quả
danh sách kết quả
tham số CVA
menu chính
AVI file
Hình 6.2 - Các vùng trên giao diện chính
AVI file: đây là phần sẽ hiển thị nội dung của file avi, cho phép playback file avi, duyệt qua từng frame. Phần này gồm có một button nằm ở phía trên bên phải, cho phép người sử dụng mở một file avi, nằm bên trái là hệ thống nút nhất cho phép playback file avi. Góc phải bên dưới làm nhiệm vụ hiển thị số thứ tự của frame hiện tại đang được hiển thị trên tổng số frame của file avi
Đối tượng tìm kiếm : vùng này sẽ hiển thị đối tượng đã được người sử dụng chọn ra từ Querry image. Vùng hiển thị chỉ được giới hạn có kích thước là 40x40, đối tượng dù được chọn với kích thước bao nhiêu sẽ được set lại theo tỉ lệ nhất định để phù hợp với kích thước này.
Querry image: vùng chứa ảnh nguồn mà từ đó sẽ chọn ra đối tượng để tìm kiếm. Nằm ở góc phải phía trên cũng có một button cho phép người sử dụng mở file ảnh bất kì Ở giữa vùng này sẽ hiển thị ảnh mà người dùng đã chọn, người sử dụng chỉ có thể chọn ra đối tượng khi di chuột ở đây.
Frame kết quả: vùng này chịu trách nhiệm hiển thị frame kết quả sau khi đã thực hiện đo độ tương tự của đối tượng cần kiếm với các đối tượng trong các frame của file avi.
Danh sách kết quả: đây là một listbox chứa danh sách các frame mà chương trình đã tìm được với kết quả phù hợp với đối tượng đã được chọn ở trên.
Tham số CVA: vùng này chứa các textbox cho phép người sử dụng điều chỉnh các tham số trong mô hình CVA, là mô hình chính được sử dụng để đo đo độ tượng tự của chương trình.
Menu chính: đây là hệ thống menu của chương trình, chứa đựng toàn bộ các thao tác của chương trình, , trên đó bao gồm 4 menu.
Menu File: cho phép người sử dụng truy cập 3 chức năng : mở file AVI (Open AVI File), mở ảnh gốc (Open Querry Image), và kết thúc chương trình (Exit)
Hình 6.3 - Menu File
Menu Playback: cho phép người sử dụng thao tác chính với file avi, bao gồm chơi file avi (Play), tạm dừng (Pause), dừng hẳn (Stop), chơi ở tốc độ cao (High speed), chơi ở tốc độ thấp (Low speed), xem thuộc tính của file avi (Property)
Hình 6.4 - Menu Playback
Menu Process: menu này chứa đựng các thao tác quan trọng nhất của chương trình.
Hình 6.5 - Menu Process
Hiển thị histogram (Show histogram): bao gồm hiển thị histogram của frame hiện tại (From AVI), ảnh gốc (From Querry) và ảnh kết quả (From Result).
Ghi frame thành ảnh (Save to bitmap)
Xác định độ đo tương tự (Similarity Measurement)
6.2.2 Chức năng mở file AVI, ảnh gốc
Hình dưới mô tả hộp thoại cho phép người sử dụng chọn mở file avi, thao tác này có thể được thực hiện thông qua bằng hai cách: sử dụng button trong vùng AVI file hoặc chọn submenu "Open AVI file..." trên menu File. Hiện tại chương trình mới chỉ cho phép người sử dụng thao tác với file avi nên hộp thoại này chỉ cho phép chọn các file có phần mở rộng là "avi".
Hình 6.6 - Hộp thoại mở file AVI
Để mở ảnh gốc (Querry Image) người sử dụng có thể thực hiện bằng cách click vòa button trong vùng Querry image hoặc thông qua submenu "Open Querry image..." trên menu File. Chương trình hiện tại đã cho phép người sử dụng thao tác với hầu hết các định dạnh cơ bản, dưới đây là hình ảnh của hộp thoại này:
Hình 6.7 - Hộp thoại mở file ảnh nguồn
6.2.3 Thao tác với file AVI
Chương trình cho phép playback file avi thông qua các thao tác : play, pause, stop, high speed, low speed, ngoài ra cũng cho phép người sử dụng xem các thông số kỹ thuật của file avi hiện đang được mở.
Sau khi mở file avi người sử dụng có thể thực hiện chơi file avi ở tốc độ bình thường bằng cách chọn trong menu Playback® Play hoặc button trong vùng AVI file. Quá trình này có thể bị tạm dừng (pause) khi người dùng chọn (hay Playback® Play), hoặc dừng hẳn khi chọn (hay Playback®Stop). Ngoài ra, chương chình chọn cho phép người sử dụng chơi file ở tốc độ cao (Playback®High speed) hoặc chơi ở chế độ thấp (Playback®Slow speed). Cuối cùng người sử dụng có thể xem các thông số kỹ thuật của file avi đang được mở, bằng cách chọn trên menu Playback®Property:
Hình 6.8 - Hộp thoại property
6.2.4 Hiển thị histogram
Để người sử dụng có thể đánh giá hoạt động của chương trình một các trực quan hơn, chương trình có chức năng cho xem hist togram của các image hiển thị trên giao diện. Khi người sử dụng chọn xem histgram của một ảnh bất kỳ, hộp thoại sau sẽ hiện ra:
Hình 6.9 - Hộp thoại Histogram
Bên cạnh việc hiển thị histogram, hộp thoại này còn cung cấp cho người sử dụng một số lựa chọn, bao gồm: xem histogram theo các màu riêng biệt (Red, Green, Blue) thậm chí là histogram của ảnh ở dạng đa cấp xám (Gray), áp dụng toán tử logarit cho histogram nhằm đẩy cao đồ thị để quan sát.
Người sử dụng có thể xem histogram của 3 image khác nhau hiển thị trên giao diện của chương trình:
Xem histogram của Frame: để xem histogram của frame hiện tại người sử dụng thực hiện chọn trên menu Process®Show histogram®From Frame.
Xem histogram của ảnh nguồn: sau khi chọn ảnh bất kì làm ảnh nguồn (Querry Image), để xem histogram của nó, người sử dụng có thể truy cập theo menu: Process®Show histogram®From Querry Image
Xem histogram của ảnh kết quả: sau khi thực hiện xác định độ đo tương tự, kết quả trả về là các frame nằm trong danh sách kết quả, để xem histogram của một frame trong đó người sử dụng chọn một frame rồi chọn trên menu : Process®Show histgram®From Result.
6.2.5 Xuất frame ra file bitmap
Như phân tích ở chương 5, để có được kết quả có độ chính xác cao hơn thì ảnh gốc nên là một frame chích ra từ file avi, chức năng này của chương trình cho phép thực hiện điều đó. Sau khi quan sát các frame của file avi, người sử dụng có thể thực hiện xuất frame ra file bitmap bằng cách lựa chọn trên menu Process®Save to bitmap, khi đó hộp thoại sau sẽ hiện ra:
Hình 6.10 - Tùy chọn save frame
Có 2 lựa chọn cho người sử dụng khi thực hiện thao tác này:
Current frame: khi thực hiện lựa chọn này thì frame hiện tại (đang hiển thị trên giao diện) sẽ được save ra file bitmap.
More frames: lựa chọn này cho phép ghi một chuỗi các frame ra file bitmap bằng cách nhập vào frame bắt đầu và rame kết thúc.
Sau khi chọn một trong hai lựa chọn trên và nhấn OK một hộp thoại khác sẽ hiện ra cho phép người sử dụng chọn tên file bitmap sẽ đươc save:
Hình 6.11 - Hộp thoại Save as frame
6.2.6 Khoanh vùng đối tượng cần tìm
Hình 6.12 - Khoanh vùng đối tượng
Chức năng này cho phép người sử dụng chọn lựa đối tượng cần tìm kiếm trong ảnh gốc. Để làm được điều này, người sử dụng thực hiện di chuột qua vùng chứa đối tượng mong muốn, một hình chữ nhật tạm thời sẽ được vẽ bao quanh đối tượng và khi chuột được thả ra thì hình chữ nhật sẽ biến mất và đối tượng được chấp nhận và hiển thị trên vùng Đối tượng tìm kiếm.
6.2.7 Xác định độ đo tương tự
Đây là chức năng cuối cùng và cũng là chức năng quan trọng nhất của chương trình. Chức năng này thực hiện đo độ đo tương tự giữa đối tượng tìm kiếm với các đối tượng phát hiện trong các frame của file avi và rút ra các frame có độ tương tự phù hợp (đã được định trước theo ngưỡng). Người sử dụng có thể thực hiện chức năng này bằng hai cách: click chọn button trên giao diện hoặc chọn trên menu Process®Similarity Measurement. Sau khi quá trình tính toán được khởi động, chương trình sẽ thực hiện xác định độ đo tương tự và sắp xếp các frame kết quả vào listbox theo thứ tự từ cao xuống thấp, như sau:
Hình 6.13 - Danh sách frame kết quả
6.3 Kết quả đạt được
Chương trình đã giải quyết được vấn đề lớn nhất của đồ án đó là "tìm kiếm theo nội dung trong file avi". Chương trình đã thực hiện theo phương pháp CVA với tiền xử lý là kỹ thuật histogram dòng,cột để xác định độ tương tự giữa 2 ảnh thông qua đối tượng chọn trước và vị trí của đối tượng trong ảnh. Kết quả trả về được kết xuất thành một danh sách theo thứ tự giảm dần độ tương tự và nằm trong một ngưỡng cho trước. Kết quả này là khả quan trong trường hợp file avi và file ảnh đầu vào có chất lượng cao và tương đồng về dịnh dạng. Tuy nhiên, với các file có chất lượng tương đối thấp, chịu ảnh hưởng nhiều của nhiễu thì chương trình không đưa lại được kết quả như mong muốn thậm chí còn cho về kết quả không chính xác. Điều này đỏi hỏi phải có những điều chỉnh hợp lý hơn trong thời gian sắp tới.
KẾT LUẬN
Dữ liệu video số là một loại dữ liệu "cao cấp" trong các loại dữ liệu số của loài người. Nó không chỉ chứa đựng dữ liệu ảnh (mỗi frame) mà còn chứa đựng cả dữ liệu âm thanh (audio), nội dung chứa đựng trong video cũng chứa đựng nhiều giá trị và đáng tin cậy hơn so với các loại dữ liêu khác. Chính vì vậy việc phát triển các bài toán nhằm khai thác hợp lý nguồn dữ liệu này sẽ đem lại nhiều lợi ích vô cùng to lớn. Và bài toán "tìm kiếm theo nội dung trong file video" là một trong số đó.
Trong khuôn khổ của một đồ án tốt nghiệp em đã thực hiện tìm hiểu được các vấn đề cơ bản nhất liên quan đến bài toàn này, đề xuất một phương án giải quyết dựa trên những nghiên cứu mới nhất và cuối cùng demo được một chương trình cho phép giải quyết bài toán ở mức độ trung bình.
Hướng phát triển trong thời gian sắp tới sẽ là cải tiến phương pháp đã được đề xuất nhằm làm tăng hiểu quả của chương trình. Bên cạnh đó, nghiên cứu áp dụng thêm các phương pháp khác, chọn lọc ra phương pháp ưu việt nhất để giải quyết bài toán trong từng trường hợp cụ thể, cuối cùng là đưa ra được một chương trình mang ý nghĩa thực tiễn cao hơn.
TÀI LIỆU THAM KHẢO
Li Chen and F.W.Stentiford, An Attention Based Similarity Measure for Colour, University College London, 2005.
F.W.Stentiford, An attention based similarity measure for fingerprint retrieval, UK IP5 3RE, 2004.
ÉtienneBaudrier, GillesMillon, FredericNicolier, SuRuan, A new similarity measure using Hausdorff distance map, 10026 Troyes Cedex, 2005.
Pavel Paclík , Jana Novovicova ,Robert P.W.Duin, A trainable similarity measure for image classification, Delft Universityof Technology, 2004.
PTS Nguyễn Ngọc Kỷ, Bài Giảng môn Xử lý ảnh cho Cao học Tin học tại ĐHBK Hà Nội, ĐHBK Hà Nôi, 1997.
Phạm Công Ngô, Lập trình windows bằng Visual C, NXB Giao thông vận tải, 2000.
www.codeguru.com
www.codeproject.com
PHỤ LỤC
1. Xác định độ đo tương tự
int i;
RGBQUAD rgbX,rgbY;
for (i = 0; i < COUNT_OF_NEIGHTBOUR; i++)
{
rgbX = m_imgSource->GetPixelColor(x.x + m_aNeightbourhood[i].x, x.y + m_aNeightbourhood[i].y);
rgbY = m_imgTmpTmp->GetPixelColor(x.x + m_aNeightbourhood[i].x, x.y + m_aNeightbourhood[i].y);
if (abs(rgbX.rgbBlue - rgbY.rgbBlue) > NGUONG_DO ||
abs(rgbX.rgbGreen - rgbY.rgbGreen) > NGUONG_DO ||
abs(rgbX.rgbRed - rgbY.rgbRed) > NGUONG_DO ||
abs(rgbX.rgbReserved - rgbY.rgbReserved) > NGUONG_DO)
{
return 0;
}
}
return 1;
2. Sinh ngẫu nhiên tập láng giềng
int i;
bool *aFlag = NULL;
long x,y;
aFlag = (bool *)malloc(sizeof(bool) * 4 * cx * cy);
if (NULL == aFlag) return false;
for (i = 0; i < 4 * cx * cy; i++)
{
*(aFlag + i) = false;
}
srand((unsigned)time(NULL));
for (i = 0; i < nPoint; i++)
{
x = rand() % (2 * cx + 1);
y = rand() % (2 * cy + 1);
while (*(aFlag + y * cx + x) && (cx/2 == x) && (cy/2 == y))
{
x = rand() % (2 * cx + 1);
y = rand() % (2 * cy + 1);
}
m_aNeightbourhood[i].x = cx/2 - x;
m_aNeightbourhood[i].y = y - cy/2;
*(aFlag + y * cx + x) = true;
}
free(aFlag);
3. Hiển thị Histogram
hMax = m_imgImage->Histogram(hRed, hGreen, hBlue, hGray);
if (hMax)
{
int ybase = r.bottom-10;
if (m_logen){
float yratio = (r.bottom - r.top - 50)/(float)log10((float)(hMax+1));
if (m_ren){
CPen redPen(PS_SOLID, 1, RGB(222, 0, 0));
pOldPen = dc.SelectObject(&redPen);
dc.MoveTo(10, (int)(ybase-log10((float)(1+hRed[0]))*yratio));
for (int x=1; x<256; x++)
dc.LineTo(x+10, (int)(ybase-log10((float)(1+hRed[x]))*yratio));
}
if (m_gen){
CPen greenPen(PS_SOLID, 1, RGB(0, 222, 0));
pOldPen = dc.SelectObject(&greenPen);
dc.MoveTo(10, (int)(ybase-log10((float)(1+hGreen[0]))*yratio));
for (int x=1; x<256; x++)
dc.LineTo(x+10, (int)(ybase-log10((float)(1+hGreen[x]))*yratio));
}
if (m_ben){
CPen bluePen(PS_SOLID, 1, RGB(0, 0, 222));
pOldPen = dc.SelectObject(&bluePen);
dc.MoveTo(10, (int)(ybase-log10((float)(1+hBlue[0]))*yratio));
for (int x=1; x<256; x++)
dc.LineTo(x+10, (int)(ybase-log10((float)(1+hBlue[x]))*yratio));
}
if (m_grayen){
CPen grayPen(PS_SOLID, 1, RGB(64, 64, 64));
pOldPen = dc.SelectObject(&grayPen);
dc.MoveTo(10, (int)(ybase-log10((float)(1+hGray[0]))*yratio));
for (int x=1; x<256; x++)
dc.LineTo(x+10, (int)(ybase-log10((float)(1+hGray[x]))*yratio));
}
dc.SelectObject(pOldPen);
} else {
float yratio = (r.bottom - r.top - 50)/(float)hMax;
if (m_ren){
CPen redPen(PS_SOLID, 1, RGB(222, 0, 0));
pOldPen = dc.SelectObject(&redPen);
dc.MoveTo(10, (int)(ybase-hRed[0]*yratio));
for (int x=1; x<256; x++)
dc.LineTo(x+10, (int)(ybase-hRed[x]*yratio));
}
if (m_gen){
CPen greenPen(PS_SOLID, 1, RGB(0, 222, 0));
pOldPen = dc.SelectObject(&greenPen);
dc.MoveTo(10, (int)(ybase-hGreen[0]*yratio));
for (int x=1; x<256; x++)
dc.LineTo(x+10, (int)(ybase-hGreen[x]*yratio));
}
if (m_ben){
CPen bluePen(PS_SOLID, 1, RGB(0, 0, 222));
pOldPen = dc.SelectObject(&bluePen);
dc.MoveTo(10, (int)(ybase-hBlue[0]*yratio));
for (int x=1; x<256; x++)
dc.LineTo(x+10, (int)(ybase-hBlue[x]*yratio));
}
if (m_grayen){
CPen grayPen(PS_SOLID, 1, RGB(64, 64, 64));
pOldPen = dc.SelectObject(&grayPen);
dc.MoveTo(10, (int)(ybase-hGray[0]*yratio));
for (int x=1; x<256; x++)
dc.LineTo(x+10, (int)(ybase-hGray[x]*yratio));
}
}
}
Các file đính kèm theo tài liệu này:
- Tìm kiếm theo nội dung trong file video.doc