Luận văn Nghiên cứu một số kỹ thuật xác định độ đo tương tự và ứng dụng

Khi đọc 1 ảnh vào chương trình sẽ tự động tính Histogram của ảnh đó, tiếp theo ta đọc một file video vào, và ta nhấn nút seach chương trình sẽ tự tách mỗi frame của file video ra và so sánh với histogram của file ảnh đó, lần lượt cho đến khi hết các Frame và chọn ra frame có độ tương tự lớn nhất để kết luận.

pdf63 trang | Chia sẻ: lylyngoc | Lượt xem: 2529 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Luận văn Nghiên cứu một số kỹ thuật xác định độ đo tương tự và ứng dụng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
hệ có tốc độ quay khác nhau như : NTSC 30 hình/giây, PAL 24 hình/giây, SECAM 29.99 hình/giây. Khung hình là đơn vị cơ bản nhất của dữ liệu video. Theo chuẩn của hệ NTSC thì một giây có 30 khung hình, vậy một phút có 1800 khung hình, một giờ có 60x1800 = 108000 khung hình. Có thể thấy rằng số lượng khung hình cho một đoạn video thường là rất lớn, cần phải có một đơn vị cấp cao hơn cho video số. * Không gian màu Một không gian màu là một mô hình đại diện cho màu về mặt giá trị độ sáng; một không gian màu xác định bao nhiêu thông tin màu được thể hiện. Nó định nghĩa không gian 1,2,3, hoặc 4 chiều mà mỗi chiều của nó, còn gọi là thành phần, đại diện cho những giá trị độ sáng. Một thành phần màu còn được gọi là một kênh màu. Mỗi điểm ảnh trong ảnh có thể được đại Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 19 diện bởi một điểm trong không gian màu 3 chiều. Những không gian màu thường được dùng để bao gồm RGB, CMY, Munsell, CIE l*a*b*, CIE L*u*v*, HSV, HSL. Cho đến nay vẫn chưa có sự thống nhất không gian nào là tốt nhất. Sau đây là một số không gian màu thường gặp - Không gian độ xám Không gian độ xám chỉ có một thành phần, biến đổi từ đen đến trắng, như trong hình. Không gian độ xám được dùng chủ yếu trong việc hiển thị và in ấn trắng đen và độ xám. Hình 1.7. Không gian màu độ xám - Không gian màu RGB Không gian RGB là không gian màu được sử dụng rộng rãi trong việc hiển thị hình ảnh. Ý tưởng tạo ra không gian màu RGB đến từ cái cách mà mắt con người hoạt động. Nó có những cơ quan cảm nhận để phát hiện ra 3 màu khác nhau: đỏ(red), lục (green), lam (blue). Không gian màu RGB cũng gồm có 3 thành phần màu: Red, Green, và Blue. Những thành phần này được gọi là màu gốc để cộng vào, vì mỗi màu được tạo nên bằng cách cộng thêm các phần tử vào màu đen(0,0,0). Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 20 Hình 1.8. Không gian RGB Hình 1.9. Không gian RGB Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 21 Hình 1.10. Không gian RGB - Không gian màu CMY Không gian CMY được dùng chủ yếu trong in ấn. CMY là viết tắt của Cyan-Magenta-Yellow (màu lục lam, màu đỏ tươi, màu vàng), đó là ba màu chính tương ứng với ba màu mực in. Chúng được gọi là những màu gốc để trừ, vì mỗi màu trong không gian CMY được tạo ra thông qua việc hấp thu độ sáng. Cyan hấp thu sự chiếu sáng của màu đỏ, Magenta hấp thu màu xanh lục, Yellow hấp thu màu xanh dương. Hình 1.11. Không gian CMY Mối quan hệ giữa RGB và CMY : C = 1 – R M = 1 – G Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 22 Y = 1 - B - Không gian màu HSV Mô hình HSV(Hue, Saturation, Value), còn gọi là HSB (Hue, Saturation, Brightness) định nghĩa một không gian màu gồm có 3 thành phần tạo nên : Hue, loại màu (chẳng hạn màu đỏ, xanh, hay vàng) Có giá trị từ 0 - 360 hoặc từ 0 - 2đ Saturation, độ thuần khiết của màu Có giá trị từ 0 – 100%, thường được chuẩn hoá về 0 – 1. Độ thuần khiết của một màu càng thấp, độ xám của màu đó càng nhiều và màu đó càng mờ. Value, độ sáng của màu Có giá trị từ 0 – 100%, thường được chuẩn hóa về 0 – 1. Mô hình HSV được tạo ra từ nãm 1978 bởi Alvy Ray Smith. Nó là một phép biến đổ i phi tuyến của không gian màu RGB. Mô hình HSV giúp tách bạch màu (H, S) và độ sáng (V), phù hợp với cảm nhận của con người. 1.1.2.5. Lược đồ màu (Color Histogram) * Định nghĩa Lược đồ màu của ảnh cho biết sự phân bố của các màu trong ảnh. n in iH ][ ][  Trong đó : i là một bin màu, nếu ảnh độ xám thì i[0,255] , nếu ảnh màu RGB thì i [0,224 ] n[i] : số điểm ảnh có giá trị màu là i n : tổng số điểm ảnh Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 23 Hình 1.12. Lược đồ màu ứng với frame Hình 1.13. Mắt người không nhạy cảm với sự thay đổi màu sắc Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 24 Để cải tiến phù hợp cho việc ứng dụng trong tìm kiếm, các màu trong không gian màu HSV được định lượng trước khi tính lược đồ màu. Có nhiều cách định lượng, một trong những cách đó là chia Hue thành 18 vùng, chia Saturation thành 3 vùng chia Value thành 3 vùng Khi đó, tổng số màu bằng HxSxI = 162 màu, chi phí tính toán và lư u trữ giảm đi rất nhiều, và lược đồ màu này rất thích hợp cho việc truy tìm thông tin thị giác. Hình 1.14. Các màu đã được định lượng trong không gian HSV * Ý nghĩa của lược đồ màu Đối với một màu ci, Hci(I) thể hiện số điểm ảnh có màu ci trong ảnh I. Nói cách khác, với mỗi điểm ảnh trong ảnh I, Hci(I) thể hiện xác suất điểm Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 25 ảnh đó có màu là ci. Không có mang thông tin về không gian. * Đánh giá ưu điểm, khuyết điểm Ưu điểm - Tính toán lược đồ màu ít tốn chi phí, đơn giản, nhanh chóng. - Lược đồ màu bất biến đối với một số phép biến đổi hình học như phép biến đổi Affine : tịnh tiến, xoay, sự co, giãn. Khuyết điểm Lược đồ màu chỉ xét phân bố toàn cục về màu của ảnh mà không xét đến yếu tố cục bộ về vị trí, làm mất thông tin về quan hệ không gian giữa các màu. Dẫn đến việc có thể có nhiều ảnh khác nhau nhưng lại có cùng lược đồ màu Ứng dụng Được ứng dụng nhiều trong việc phân đoạn video và truy tìm thông tin thị giác. 1.1.2.6. Lược đồ tương quan màu (Color Correlogram) * Giới thiệu lược đồ tương quan màu Quan sát thấy rằng lược đồ màu thiếu thông tin về cách mà màu sắc được phân bố theo không gian, Một đặc trưng mới được giới thiệu gọi là lược đồ tương quan màu. Lược đồ tương quan màu hứa hẹn mô tả không chỉ là phân phối màu của các điểm ảnh mà còn là sự tương quan về không quan giữa các cặp màu. * Tính lược đồ tương quan màu Gọi [D] là tập gồm D khoảng cách d1 , d 2 ,..., d D được đo bằng độ đo L . Lược đồ tương quan màu của ảnh I được xác định với cặp màu ci , c j và khoảng cách d như sau: ]|||[Pr)( 212 , )( , 21 dppIpI Lc IpIp d cc j c ji    Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 26 Trong đó I là ảnh, kích thước MxN (Điểm ảnh), I c  p  I | Ip c, lược đồ tương quan màu thể hiện xác suất cặp điểm ảnh bất kỳ p1và p2 chịu sự ràng buộc về màu ( p1 có màu ci, p2 có màu c j ) và vị trí ( p1  p2 |L  d ). * Lược đồ tự tương quan màu Nếu chúng ta xét đến tất cả sự kết hợp có thể có của các cặp màu, kích thước của lược đồ tương quan màu sẽ rất lớn, hơn nữa, thời gian tính toán sẽ lâu. Do đó, một phiên bản đơn giản hơn được sử dụng, gọi là lược đồ tự tương quan màu. Lược đồ này chỉ quan tâm đến sự tương quan về không gian giữa những màu giống nhau và do đó giảm được số chiều và chi phí tính toán. Lược đồ tự tương quan màu được xác định như sau: )()( )(, )( II dcc d c   c ( d) (I ) là lược đồ tự tương quan màu của ảnh I ứng với màu c và khoảng cách d. * Ứng dụng - Dùng trong việc phân đoạn video - Tạo chỉ mục và so sánh ảnh - Định vị đối tượng, theo vết đối tượng So với lược đồ màu, lược đồ tự tương quan màu cho những kết quả truy tìm tốt hơn nhưng tốn chi phí nhiều hơn. 1.1.2.7. Đặc trưng chuyển động (Motion) * Giới thiệu Chuyển động là một trong những đặc trưng của dữ liệu video. Đây là một đặc trưng nổi bật của video mà ảnh tĩnh không có. Đặc trưng chuyển động được sử dụng rất rộng rãi trong các nghiên cứu cũng như cài đặt ứng dụng xử lý video số. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 27 Hình 1.15. Đặc trưng chuyển động * Lược đồ chuyển động Nếu như lược đồ màu thể hiện sự phân phối màu trong ảnh thì lược đồ chuyển động cho thấy sự phân phối chuyển động của các khung hình liên tiếp. Sự phân phối này được thể hiện dưới dạng các góc chuyển động. - Thuật toán tính lược đồ chuyển động Chia khung hình thành n khối điểm ảnh, và định lượng các góc từ 0 đến 360 độ thành 8 phần : 0o-44o, 45o-89o,…, 315o-359o. Bước 1: khởi động mảng các góc đã định lượng : H [i] 0 , với i từ 0 đến 7. Bước 2: Xét một khối điểm ảnh của khung hình hiện tại, tính độ dịch chuyển của nó bằng cách : trong khung hình tiếp theo, tìm khối có sự khác biệt đặc trưng nhỏ nhất so với khối đang xét và sự khác biệt này cũng nhỏ hơn một ngưỡng định trước. Mục đích của bước này là để xem khối này dịch chuyển đến vị trí nào. Nếu không tìm thấy thì xem như khối điểm ảnh này không di chuyển. Bước 3 : Sau khi tính độ dịch chuyển, dễ dàng tính được góc dịch chuyển của khối và định lượng góc đó về một giá trị a, a nằm trong khoảng từ 0 đến 7. Bước 4 : tăng giá trị của H [a] H [a] 1 . Quay lại bước 2 cho đến khi tính hết tất cả các khối điểm ảnh của khung hình. ảnh tại vị trí điểm ảnh đang xét. Lặp lại bước 2 cho đến khi tính hết các điểm ảnh trong khung hình. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 28 Sau khi tính toán cho tất cả điểm ảnh trong khung hình, ta có được 2 ảnh chuyển động của khung hình theo 2 phương . - Ý nghĩa Ảnh chuyển động cho biết độ lớn chuyển động theo 2 phương của mỗi điểm ảnh của khung hình. Tại vị trí nào đó mà ảnh chuyển động có giá trị lớn thì điểm ảnh đó chuyển động càng nhiều. 1.1.2.8. Các bước thao tác với file video [1] AVI là chuẩn video thường được tích hợp trong các thư viện của các môi trường lập trình. Để xử lý video, cần có các thao tác cơ bản để chuyển về xử lý ảnh các khung hình (các frames). Bƣớc 1: Mở và đóng thƣ viện Trước mọi thao tác với file AVI, chúng ta phải mở thư viện: AVIFileInit( ) Hàm này không cần tham số, có nhiệm vụ khởi động thư viện cung cấp các hàm thao tác với file AVI. (Đó là thư viện vfw32.lib, được khai báo trong file vfw.h). Sau tất cả các thao tác bạn phải nhớ đóng thư viện đã mở lúc đầu, chỉ bằng lệnh: AVIFileExit( ) Nếu thiếu bất cứ hàm nào, dù là mở hay đóng thư viện thì trình biên dịch đều sẽ thông báo lỗi. Bƣớc 2: Mở và đóng file AVI để thao tác: Sau khi mở thư viện, bạn phải mở file AVI bạn định thao tác: AVIFileOpen(PAVIFILE* ppfile, LPCSTR fname, UINT mode, CLSID pclsidHandler) Thực chất, hàm này tạo ra một vùng đệm chứa con trỏ trỏ đến file có tên là fname cần mở. Và ppfile là con trỏ trỏ đến vùng bộ đệm đó. Tham số Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 29 mode quy định kiểu mở file; chẳng hạn OF_CREATE để tạo mới, OF_READ để đọc, OF_WRITE để ghi …. Tham số cuối dùng là NULL. Trước khi đóng thư viện, bạn phải đóng file AVI đã mở, bằng cách dùng hàm: AVIFileRelease(PAVIFILE pfile) Trong đó, pfile là con trỏ trỏ đến file cần đóng. Bƣớc 3: Mở dòng dữ liệu hình ảnh hay âm thanh trong file AVI đã mở ra để thao tác: AVIFileGetStream(PAVIFILE pfile, PAVISTREAM * ppavi, DWORD fccType, LONG lParam) Trong đó, pfile là con trỏ đến file đã mở; ppavi trỏ đến dòng dữ liệu kết quả; fccType là loại dòng dữ liệu chọn để mở, là streamtypeAUDIO nếu là tiếng và streamtypeVIDEO nếu là hình,…lParam đếm số loại dòng được mở, là 0 nếu chỉ thao tác với một loại dòng dữ liệu. Sau các thao tác với dòng dữ liệu này, bạn nhớ phải đóng nó lại: AVIStreamRelease(PAVITREAM pavi). Bƣớc 4: Trƣờng hợp thao tác với dữ liệu hình của phim Chuẩn bị cho thao tác với khung hình (frames): AVIStreamGetFrameOpen(PAVISTREAMpavi,LPBITMAPINFOHEADER lpbiWanted) Trong đó pavi trỏ đến dòng dữ liệu đã mở, lpbiWanted là con trỏ trỏ đến cấu trúc mong muốn của hình ảnh, ta dùng NULL để sử dụng cấu trúc mặc định. Hàm này trả về đối tượng có kiểu PGETFRAME để dùng cho bước 5. Sau khi thao tác với các frame rồi, phải gọi hàm : AVIStreamGetFrameClose(PGETFRAME pget) Bƣớc 5: Thao tác với frame Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 30 Dùng hàm AVIStreamGetFrame(PGETFRAME pget, LONG lpos) Hàm này trả về con trỏ trỏ đến dữ liệu của frame thứ lpos. Dữ liệu đó có kiểu là DIB đã định khối. Thực hiện các thao tác mong muốn. 1.2. Độ đo tƣơng tự trong xử lý ảnh[3] Hiện nay trên thế giới có rất nhiều phương tiện dùng để thu thập thông tin và lưu dưới dạng số hoá. Trong khi lưu trữ các thông tin này người sử dụng gặp phải vấn đề với quá nhiều hình ảnh khác nhau và vấn đề quản lý những hình ảnh này. Rất nhiều các nhà lập trình đã tiếp cận và tạo ra hệ thống để quản lý một cách có hiệu quả nhất tức là dùng bộ nhớ thị giác của máy tính để lưu trữ và đối sánh những hình ảnh này. Nghiên cứu “sự tương tự” (thường ở dạng đối ngẫu của nó là “khoảng cách”) thuộc phạm vi toán học, chẳng hạn trong lý thuyết tôpô và xấp xỉ; nhưng trong khoa học máy tính và các ứng dụng máy tính có phần khác. Trong khoa học máy tính, phép tính xấp xỉ thường được sử dụng theo một lối không có tính hệ thống (non-systematic) và không theo thể thức (ad-hoc). Trong ngữ cảnh này, khái niệm “sự tương tự” xuất hiện ở nhiều dạng, diễn xuất, và nhiều ứng dụng. Khái niệm “sự tương tự” có nhiều dạng khác nhau. Bất chấp những khác biệt, chúng đều có điểm chung: “sự tương tự” được sử dụng để so sánh hai (hay nhiều) đối tượng, hai hoàn cảnh, hai vấn đề, v.v… với nhiều nguyên do khác nhau. Luôn có mục đích nào đó với một phép so sánh như thế, bởi vì một hành động tiếp sau đó được thực hiện và cuối cùng thì một vấn đề nào đó phải được giải quyết. Vì lý do đó, hai đối tượng được đem so sánh giữ những vai trò khác nhau. Đối tượng thứ nhất đang được xem xét và được gọi là vấn Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 31 đề (problem). Đối tượng thứ hai là đã biết và đã lưu; thường được gọi là bản mẫu (prototype) hay tình huống (case). - Trong diễn xuất hình ảnh (Image Interpretation), các hình ảnh được diễn xuất theo ý nghĩa của chúng và chúng được so sánh với nhau. Ví dụ, một ảnh y khoa thực tế và một ảnh không có bệnh lý nào đó được so sánh với nhau; độ tương tự giữa những ảnh này được sử dụng để cho biết ảnh thực kia có chứa bệnh lý hay không. Xác minh hình ảnh (Image Identification) cũng thuộc về lĩnh vực này. - Trong tâm lý học nhận thức và xã hội (Cognitive and Social Psychology), “sự tương tự” là cái gì đó chủ quan; ám chỉ thái độ, giá trị, sở thích, và cá tính giữa những con người tương xứng mức độ nào. Có nhiều dạng mô hình về sự tương tự trong tâm lý học, bốn mô hình nổi bật là hình học (geometric), đặc tính (featural), dựa trên canh lề (alignment-based), và biến đổi (transformational). - Trong lĩnh vực an ninh, quốc phòng để xác định đối tượng ảnh khi muốn xác định vân tay, kiểm tra những băng đĩa mang những nội dung cần kiểm soát... Độ đo tương tự là một trong những phương pháp tốt để máy tính phân biệt được các hình ảnh qua nội dung của chúng. Thông thường hệ thống CBIR(content-based image retrieval) sẽ truy vấn hình ảnh bằng phương pháp đo tương tự dựa trên các chức năng, việc xác định nó có thể dưới nhiều hình thức như phát hiện biên, màu sắc, vị trí điểm ảnh… các phương pháp như histogram, màu sắc và phân tích histogram dòng cột sử dụng biểu đồ để xác định độ tương tự. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 32 Chƣơng 2: MỘT SỐ PHƢƠNG PHÁP XÁC ĐỊNH ĐỘ ĐO TƢƠNG TỰ 2.1. Độ đo dựa trên khoảng cách 2.1.1. Độ đo khoảng cách min – max Được thực hiện dựa trên ý tưởng lấy phần giao của hai lược đồ cần so sánh, ta sẽ được một lược đồ, tính tổng các giá trị có được từ lược đồ này cho ta được độ đo min – max Đối với độ đo min: ta tính dựa vào giá trị min tại mỗi K bin Intersection (h(I), h(M) =   K j 1 h(M)[j]}{h(I)[j],min Đối với độ đo max: ta tính dựa vào giá trị max tại mỗi K bin Intersection (h(I), h(M) =   K j 1 h(M)[j]}{h(I)[j],max Matching(h(I),h(M)) =        ii iMhiIh MhIhtionInter ])[(,])[(max ))(),((sec 2.1.2. Độ đo khoảng cách Euclid Đây là cách tính khoảng cách Euclid thông thường giữa các K bin: Intersection (h(I), h(M) =   K j 1 2h(M))-(h(I) Hoặc có thể là: Intersection (h(I), h(M) =    K j MhIh 1 )()( 2.1.3. Độ đo khoảng cách toàn phương: Intersection (h(I), h(M) =     K j K j ij jhihajhih 1 1 )]()([)()([ 2.2. Độ đo sử dụng trọng số 2.2.1. Độ đo có trọng số: Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 33 dhist(I,Q) = (h(I) – h(Q)) T A(h(I) – h(Q)) trong đó, h(I) và h(Q) là những lược đồ tương ứng của ảnh I và Q và A là ma trân đồng dạng K x K. Trong ma trận này, những màu mà rất giống nhay thì gần với giá trị một còn những màu khác nhau thì sẽ cí giá trị gần với không. 2.2.2. Độ đo hỗn hợp Một trong các độ đo hỗn hợp (độ đo MSM) được đưa ra bởi Goodall [1]. Để tính độ đo giống nhau giữa các đối tượng, đầu tiên ta tính độ đo cho từng thuộc tính, sau đó kết hợp lại. Dưới đây ta sẽ lần lượt xét các độ đo cho từng loại thuộc tính liên tục và rời rạc. Ngoài ra, ta cũng xét độ đo cho loại thuộc tính thứ tự trên thuộc tính rời rạc. 2.2.2.1. Thuộc tính rời rạc Loại thuộc tính đầu tiên mà ta xét là thuộc tính rời rạc. Các giá trị khác nhau thuộc tính không thể được so sánh. Ta coi cặp các giá trị khác nhau có độ giống nhau bằng 0; cặp các giá trị trùng nhau có độ giống nhau khác 0 và phụ thuộc vào xác suất xuất hiện của cặp giá trị đó. Cặp giá trị trùng nhau có xác suất xuất hiện nhỏ hơn sẽ có độ giống nhau lớn hơn. Kí hiệu Vi là các giá trị khác nhau của thuộc tính. Xác suất xuất hiện của các giá trị này là 1,1, 1    n i ii pnip . Kí hiệu Sij là độ giống nhau của cặp giá trị Vi và Vj, ta có: 0 0 ij ij i j S i j S       ngoài ra,      i k ij kli j k l p p S S       Gọi Pij là xác suất xuất hiện một cặp giá trị có độ giống nhau lớn hơn cặp (Vi, Vj). Dễ thấy Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 34 2 , 1,          k k Q ij p i j P i j trong đó   : k iQ k p p  Từ đó, suy ra 21 , 1 0,             k k Q ij ij p i j S P i j với Q được xác định theo công thức ở trên. Trong thực tế, các giá trị xác suất pi là không biết trước nhưng ta có thể xấp xỉ các giá trị này bằng tần suất xuất hiện của chúng trong tập mẫu. Gọi m là số lượng các phần tử trong tập mẫu và fi là tần suất của giá trị Vi, độ đo giống nhau có thể được tính xấp xỉ bởi     1 1 , 1 0,            k k ij k Q f f i j S m m i j trong đó   : k iQ k f f  2.2.2.2. Thuộc tính có thứ tự Trong trường hợp này, ta cần phải tính tới tính có thứ tự trong độ đo giống nhau. Do có tính thứ tự nên thông thường một cặp giá trị sẽ có độ giống nhau nhỏ hơn so với các cặp giá trị nằm giữa chúng. Ví dụ, ta nói cặp (B, C) sẽ có độ giống nhau lớn hơn cặp (A, C) và (B, E). Tuy nhiên, ta không thể có sự so sánh như vậy với hai cặp (A, C) và (B, E). Trong trường hợp này, chúng ta lại sử dụng đến xác suất xuất hiện của các giá trị. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 35 Giả sử các giá trị của thuộc tính là 1 2, ,..., nV V V . Theo cách hiểu thông thường và lập luận ở trên, ta có      i k ij kli j k l p p S S           ij kli j k l S S        ij ik jk iki j k S S S S      và       j l t t ij kl t i t k i j k l p X S S                       j l t t ij kl t i t k i j k l p X S S                 Xác suất ijP để xuất hiện một cặp có độ giống nhau hơn cặp  ,i jV V là 2 ,ij k k Q P p i j    với   : k iQ k p p  và 1 2 1 1 1 2 , n n ij k k l k k l k P p p p i j          trong đó  là số thoả mãn 1j t t t t k t i t k p p p           Trong trường hợp phải tính xấp xỉ, ta sử dụng công thức           1 1 1 1 1 , 1 1 2 , 1 1                       i i k Q ij n n i i k l k k l k f f i j m m P f f f f i j m m m m 2.2.2.3. Thuộc tính liên tục Với thuộc tính liên tục, ta sẽ sử dụng khoảng cách – trị tuyệt đối của hiệu của hai giá trị – làm tiêu chuẩn chính trong việc đo độ giống nhau. Cặp của hai giá trị trùng nhau thì có độ giống nhau lớn hơn cặp của hai giá trị khác Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 36 nhau; cặp có khoảng cách nhỏ hơn sẽ giống nhau hơn cặp có khoảng cách lớn hơn. Và khi các cặp có cùng khoảng cách ta sẽ sử dụng đến xác suất. Ta có:     i j k l ij kl j l i j k l t t ij kl t i t k j l i j k l t t ij kl t i t k V V V V S S V V V V p p S S V V V V p p S S                                      Tương tự, xác suất Pij là 2 2 i jk i i t i Q t T P p p p              trong đó       : 1i jQ i j k p p i n         và      :                                       t i k j k ti t i k j u u u j u i V V V V T t i t n V V V V p p Công thức để tính gần đúng độ giống nhau trong trường hợp này:     1 1 2 1 i jk i i i t i Q t T P f f f f m m                 2.2.2.4. Kết hợp độ đo của các thuộc tính Trong các phần trên ta đã xét độ giống nhau cho từng thuộc tính riêng rẽ. Độ đo giống nhau cho cặp hai đối tượng sẽ được kết hợp từ các độ đo này. Để có thể kết hợp được, ta phải giả sử là các giá trị của các thuộc tính của một đối tượng là độc lập với nhau. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 37 Kí hiệu Og và Oh là hai đối tượng cần tính độ giống nhau và k ghP là xác suất xuất hiện cặp giá trị của thuộc tính k có độ giống nhau lớn hơn cặp  ,k kg hv v . Ta định nghĩa quan hệ giữa hai đối tượng như sau: 1 1      t t k k gh ij gh ij k k P P S S trong đó t là số lượng thuộc tính và S là kí hiệu chỉ độ giống nhau giữa hai đối tượng. Nếu kí hiệu 1 gh ghP S là xác suất xuất hiện một cặp đối tượng có độ giống nhau lớn hơn cặp (Og, Oh), thì tương tự như đối với thuộc tính riêng rẽ, ta có: 1 1   t t k l gh i j Q k l p pP trong đó k ip là xác suất xuất hiện giá trị thứ i của thuộc tính thứ k và Q là tập tất cả các cặp đối tượng (Oi, Oj) thoả mãn 1 1    t t k k ij gh k k P P Việc tính chính xác S theo công thức trên yêu cầu số lượng tính toán rất lớn và trong thực tế người ta thường tính xấp xỉ nó bằng các phân bố của Fisher và Lancaster như sau  2 22 0 1 2 !       i t i e i P trong đó 1d ct t t   và 2 2 2 d c    , với 2 1 2 ln     ct k c k P cho các thuộc tính liên tục (phân bố Fisher) và ' ' 2 ' 1 ln ln 2 1          dt k k k k d k k k P P P P P P cho thuộc tính rời rạc (phân bố Lancaster). Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 38 2.2.2.5. Thuật toán nhanh cho thuộc tính liên tục Để tính độ đo giống nhau trong trường hợp thuộc tính liên tục, ta cần phải duyệt qua các xác suất xuất hiện của giá trị của thuộc tính. Do đó, độ phức tạp tính toán trong trường hợp này là ( )n , với n là số lượng giá trị. Trong trường hợp thuộc tính liên tục (số), nếu tính trực tiếp theo công thức MSM như C. Li và G. Biswas [2] đề nghị thì độ phức tạp tính toán trong trường hợp xấu nhất là 2( )n . Chúng tôi đã đề xuất cách tính gián tiếp độ đo cho kết quả hoàn toàn trùng khớp những chỉ với độ phức tạp tính toán là ( )n như nêu trong [3, 4, 5]. Ý tưởng chính của phương pháp này là không tính trực tiếp độ đo theo công thức 2 2 i jk i i t i Q t T P p p p              trong đó T là tập các chỉ số t ( k t n  ) thoả mãn t i k jV V V V   hoặc   k t t i k j u u u j u i V V V V p p               mà tính gián tiếp thông qua 1jk jkS P  . Ta chỉ cần quan tâm đến trường hợp j k , bời vì khi j = k thì 2 jk i i Q P p   , với   : i kQ i p p  và tính Pjk với độ phức tạp tuyến tính. Dễ thấy, 1 1 2 , i n jk jk i t i t T S P p p j k              với iT là tập      : k t i t i k j t i k j u u u j u i T t V V V V V V V V p p i t n                                  Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 39 Ta có thể viết iT ở dạng đơn giản hơn như sau   0:i i iT t t t n T    trong đó it là giá trị nhỏ nhất còn thoả mãn t i k jV V V V   và 0 iT là tập chỉ số t thoả mãn   k t t i k j u u u j u i V V V V p p               . Chú ý rằng 0 iT hoặc là rỗng hoặc chỉ có một phần tử. Công thức tính Sjk còn có thể biến đổi như sau   1 2 1 , n jk i i i S p s j k     trong đó, 0 1 1 i it T i t t s p      Tính Sjk theo công thức này ta có thể tận dụng si tính được trong bước trước. Dưới đây là thuật toán với độ phức tạp tuyến tính. Một số kí hiệu trong thuật toán sij: độ đo giống nhau của cặp giá trị (Vi, Vj). sumij: tổng các tần xuất từ i tới j. dij: trị tuyệt đối của hai giá trị Vi và Vj. beforek: tổng các tần xuất từ 1 tới k – 1. sumt: tổng các tần xuất 1 tới t. f[k]: tần xuất của giá trị thứ k. n: số lượng giá trị của thuộc tính. Thuật toán (cho trường hợp i j ) t = 1; beforek = 0.0; sumt = 0.0; sij = 0.0; sumij = 0.0; dij = abs(v[j] – v[i]); for k = i to j do sumij = sumij + f[k]; for k = 1 to n do { Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 40 if (v[k] + dij <= v[n]) { if (k > 1) beforek = beforek + f[k-1]; while (t <= n and abs(v[t] – v[k] <= dij)) { sumt = sumt + f[t]; t = t + 1; } sij = sij + 2 * f[k] * (1 – sumt); if (abs(v[t – 1] – v[k]) = dij and sumt – beforek <= dij) sij = sij + 2 * fk * f[t – 1]; } } 2.2.2.6. Thuật toán nhanh cho thuộc tính có thứ tự Áp dụng phương pháp tương tự như đối với thuộc tính liên tục, ta cũng có thể tính độ đo giống nhau cho thuộc tính có thứ tự với độ phức tạp tuyến tính. Trước hết ta viết lại biểu thức tính Pij dưới dạng 1 2 1 1 1 1 2 1 1 1 2 1 2 2 2 n n ij k k l k k l k n n k k l k l k n n k l k k l k P p p p p p p p p p p p                                         trong đó  thoả mãn   1 1 j t t t t k t i t k k p p p                     . Ta có thể viết lại 1 2 n ij k l k k l k P p p p             với  bây giờ có thể nhận thêm giá trị k. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 41 Sử dụng các kí hiệu như trên, thuật toán tính nhanh cho thuộc tính có thứ tự được nêu như sau: t = 1; beforek = 0.0; sumt = 0.0; sumij = 0.0; pij = 0.0; for k = i to j do sumij = sumij + f[k]; for k = 1 to n do { if (k > 1) beforek = beforek + f[k – 1]; BOOL stop = FALSE; while (t <= n and not stop) { if (sumt – beforek <= sumij and sumt + f[t] – beforek > sumij) stop = TRUE; else { sumt = sumt + f[t]; t = t + 1; } } pij = pij + f[k] * (2 * (sumt - beforek) – f[k]); } 2.3. Độ đo tƣơng tự có thể học (Trainable similarity measure)[4] Đầ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:               i i ii i ii r JJII JJII JIS 22 , Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 42 Trong đó, ký hiệu Ii và Ji biểu diễn cường độ của pixel thứ i tương ứng của các ảnh I và J 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. Độ tương tự tổng thể S(I, J, R) là 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):       R j jmean rJIs R RJIS 1 ,, 1 ,, 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ự đố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à:     22 2 ˆ ˆˆ ,, NTT NTT rr RPTC      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ểu diễn tập hợp của đối tượng học mục tiêu và không mục tiêu: Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 43          rirj riri PwIwTINT PwIwTIT   : : Ký hiệu  NTT  ˆˆ và  22 ˆˆ NTT  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). 2.4. Độ đo dựa trên Histogram [12] 2.4.1. Giới thiệu Một trong những công cụ đơn giản và hữu ích nhất cho xử lý ảnh số là lược đồ mức xám. Trong khi lược đồ mức xám của một ảnh bất kỳ chứa một lượng thông tin đáng kể, thì dĩ nhiên các loại ảnh cũng hoàn toàn được xác định rõ bởi các lược đồ mức xám của chúng. Tính toán lược đồ mức xám cũng đơn giản và có thể thực hiện khi một ảnh được sao chép từ nơi này sang nơi khác. 2.4.2. Định nghĩa Lược đồ mức xám là một hàm cho thấy, cho mỗi mức xám, số lượng điểm ảnh thuộc một mức xám có trong một ảnh. Trục hoành là mức xám và trục tung là tần suất xuất hiện (số các điểm ảnh). Có một cách khác để định nghĩa lược đồ mức xám ví dụ dưới đây cho ta hiểu rõ hơn sự hữu ích của hàm này. Giả sử chúng ta có một ảnh liên tục được định nghĩa bởi hàm số D(x,y), hàm biến thiên chậm từ mức xám cao tại tâm đến mức xám thấp tại các điểm biên. Chúng ta có thể chọn một vài mức xám D1 và định nghĩa tập các bao quanh nối tất cả các điểm coa cùng giá trị D1 trong ảnh lại với nhau. Kết quả ta được các đường cong khép kín bao quanh các vùng, mà các mức xám trong vùng là lớn hơn hay gằng D1. Hàm diện tích ngưỡng A(D) của ảnh liên tục là khu vực được khép kín bởi tất cả các đường bao có cùng mức xám D. Bây giờ có thể xác định lược đồ mức xám như sau Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 44 )( )()( lim)( DA dD d D DDADA DH oD      Cho nên, lược đồ mức xám của ảnh liên tục là phủ định của đạo hàm hàm diện tích của nó. Dấu âm của kết quả từ thực tế là A(D) giảm trong trường hợp tăng D. Nếu ảnh được xem là biến ngẫu nhiên hai chiều, thì hàm diện tích sẽ tương ứng với hàm phân bố luỹ tích của nó và lược đồ mức xám tương ứng với hàm mật độ xác suất của nó. Với trường hợp hàm rời rạc, ta đặt D=1, khi đó biểu thức (1) trở thành )1()()(  DADADH Hàm diện tích của một ảnh số đơn thuần là số các điểm ảnh có mức xám lớn hơn hoặc bằng mức xám D bất kỳ. 2.4.3. Lược đồ mức xám hai chiều Thường thì người ta tìm cách để tạo ra các lược đồ mức xám có chiều từ hai trở lên. Đây là ích lợi đặc biệt cho ảnh màu. Các ảnh được số hoá từ ảnh hiển vi chứa tế bào bạch cầu (máu trắng) và nhiều tế bào hồng cầu. Khu vực được số hoá trong ánh sáng trắng, đỏ và lam thông qua bộ lọc màu. Lược đồ mức xám đỏ - lam (red versus blue) hai chiều của hai ảnh cuối cùng ở trạng thái thấp hơn. Lược đồ mức xám hai chiều là một hàm hai biến: mức xám trong ảnh đỏ và mức xám trong ảnh lam. Giá trị tại toạ độ (DR,DB) của nó là số cặp điểm ảnh tương ứng có mức xám DR trong ảnh đỏ và mức xám DB trong ảnh lam. Nhớ lại rằng một ảnh số đa phổ (multispectral) ví dụ như ảnh này có thể cho rằng mỗi điểm lấy mẫu chỉ có một điểm ảnh đơn, nhưng mỗi điểm ảnh lại có nhiều giá trị - trong trường hợp này là hai. Lược đồ mức xám hai chiều cho thấy sự phân bố các điểm ảnh trên cơ sở kết hợp hai mức xám. Nếu các thành phần đỏ và lam giống nhau thì lược đồ mức xám sẽ có giá trị không (zero), ngoại trừ các điểm trên đường chéo 450C. Những điểm ảnh có mức xám đỏ Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 45 cao hơn mức xám lam và ngược lại sẽ tập trung ở trên và dưới đường chéo của lược đồ mức xám. 2.4.4. Các tính chất của lược đồ mức xám Khi một ảnh được cô đọng thành lược đồ mức xám, tất cả thông tin về không gian đều bị loại bỏ. Lược đồ mức xám chỉ rõ số các điểm ảnh có trong mỗi mức xám, nhưng khôngliên quan một chút nào đến vị trí mà những điểm ảnh đó định vị trong ảnh. Vì thế, lược đồ mức xám là duy nhất cho một ảnh bất kỳ, nhưng điều ngược lại không đúng. Các ảnh hết sức khác nhau có thể có lược đồ mức xám giống hệt nhau. Tất cả những phép toán dịch chuyển các đối tượng khắp nơi trong ảnh đều không làm ảnh hưởng đến đặc thù lược đồ mức xám. Tuy nhiên, lược đồ mức xám cũng có một vài thuộc tính hữu ích. Nếu chúng ta thay đổi các biến trong biểu thức trên và tích phân hai vế với cận từ D đến vô cùng, chúng ta nhận được hàm diện tích   )()()( DAPAdPPH D D    Nếu đặt D = 0, giả sử các mức xám không âm, ta được nh¶cña tÝch diÖn  0 )( dPPH Hoặc, trong trường hợp rời rạc    255 0 )( D NSNLDH trong đó NL và NS là số hàng và số cột tương ứng trong ảnh Nếu ảnh chứa chỉ một đối tượng xám cùng kiểu trên nền tương phản và chúng ta quy định rằng biên của đối tượng đó là đường bao định nghĩa bởi mức xám D1, khi đó    D dDDH thÓvËt tÝch diÖn)( Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 46 Nếu trong ảnh chứa nhiều đối tượng, thì tất cả những đường biên của chúng là đường bao tại mức xám D1, khi đó biểu thức (6) cho ta tổng diện tích tất cả các đối tượng Chuẩn hoá lược đồ mức xám bằng cách chia cho diện tích của ảnh ta được hàm mật độ xác suất (PDF) của ảnh. Một sự chuẩn hoá hàm diện tích tương tự tạo ra hàm phân bố luỹ tích (CDF) của ảnh. Lược đồ mức xám còn có tính chất hữu ích khác, trực tiếp từ định nghĩa của nó như số các điểm ảnh có trong mỗi mức xám: nếu ảnh gồm có hai miền rời nhau và đã biết lược đồ mức xám của mỗi miền, sau đó cộng hai lược đồ mức xám thành một lược đồ mức xám của toàn bộ ảnh. Hoàn toàn rõ ràng điều này có thể mở rộng cho số lượng miền rời nhau. 2.4.5. Quan hệ giữa lược đồ mức xám và ảnh Vì lược đồ mức xám của một ảnh là duy nhất, nên có khả năng nhận được lược đồ của các ảnh đơn giản mà ta đã biết dạng hàm của chúng. Mặc dù kỹ thuật này có lẽ ít khi sử dụng, nhưng nó mang lại sự hiểu biết bản chất lược đồ, và nó thiết lập cơ sở cho việc nghiên cứu sự chọn ngưỡng. Giả sử chúng ta có một ảnh của dạng hàm đã cho và chúng ta muốn tính lược đồ mức xám của nó. Chúng ta biết rằng đây là phủ định của đạo hàm đối với mức xám của hàm diện tích. Bởi thế cho nên, chúng ta có thể nhận được lược đồ nếu trước tiên chúng ta nhận được hàm diện tích từ chính sự thể hiện ảnh. Đôi khi điều này có thể được thực hiện một cách đơn giản bằng cơ sở sự quan sát. 2.4.6. Một chiều Với mục đích để cho dễ hiểu, đầu tiên chúng ta nói về trường hợp một chiều (dimension). ở đây từ “diện tích” thực tế chỉ có chiều dài, nhưng nó giải thích mối quan hệ giữa lược đồ và ảnh của nó. Xem xét xung Gauss một chiều cho bởi Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 47   xexD x - 2 )( Lưu ý rằng với x  0 (không âm), hàm là đơn điệu tăng (monotonic). Hơn nữa, diện tích chỉ đơn thuần là nghịch đảo của hàm ảnh. Vì thế, với giá trị x0 (không âm), chúng ta có thể giải biểu thức (15) bằng cách xem x như một hàm mức xám 0)ln()(  xDDx Là hàm diện tích đối với nửa ảnh bên phải. Bởi vì hai phần nửa ảnh đối xứng nhau, toàn bộ hàm diện tích sẽ gấp hai lần diện tích trong biểu thức (16). Lược đồ được cho bởi   )ln( 1 )ln(2)( DD D dD d DH   Và được trình bày trong hình 5-6. Lược đồ nhọn dần lên tại D = 0 bởi vì những vùng rộng của những mức xám thấp với các giá trị x dương và âm. Đỉnh nhọn nhỏ tại D = 1do ảnh có hệ số góc (slope) không tại x = 0 (chẳng hạn, xung Gauss “bằng phẳng” cục bộ chính tại đỉnh). 2.4.7. Hai chiều Thủ tục tương tự có thể mở rộng cho ảnh hai chiều bằng cách sử dụng có suy xét tính đối xứng trong ảnh. Ta có thể lấy đối xứng vòng theo cách dưới đây. Giả sử ảnh là xung Gauss đối xứng vòng tròn tâm nằm ở gốc. Hàm ảnh theo toạ độ cực cho bởi    0,0),( 2 rerD r Đường viền mức xám P không đổi là đường tròn có bán kính )ln()( pPr  Đường trên bọc kín một vùng   )ln()()( 2 PPrPA   Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 48 Bây giờ, hàm diện tích của biểu thức (20) có thể được đạo hàm để tạo ra lược đồ P PA dD d PH   )()( Lưu ý rằng điểm có hệ số góc không tại gốc không đủ mạnh để tạo ra một đỉnh nhọn tai D = 1, như đã tạo ra đối với trường hợp một chiều. Với ảnh phức tạp hơn, lược đồ mức xám có thể nhận do sự phân vùng ảnh thành các miền rời nhau, sao cho có thể xác định được các hàm diện tích. Lược đồ mức xám của một ảnh trọn vẹn là tổng tất cả các lược đồ của các miền rời nhau. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 49 CHƢƠNG 3 ỨNG DỤNG ĐỘ ĐO TƢƠNG TỰ TRONG VIỆC PHÂN LOẠI ẢNH TRONG FILE VIDEO 3.1. Giới thiệu bài toán Bài toán của chúng ta như sau: Đầu vào: - Đọc 1 file video - Đọc 1 file ảnh Đầu ra: - Kết luận về độ tương tự của file ảnh đối với một trong các frame của file video. 3.2. Cài đặt thuật toán 3.2.1. Code đọc ảnh bool ConvertToDFB(HBITMAP& hBitmap) { bool bConverted = false; BITMAP stBitmap; Input: - Ảnh - File video Tìm kiếm (Đối sánh) Output: - Kết luận Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 50 if (GetObject(hBitmap, sizeof(stBitmap), &stBitmap) && stBitmap.bmBits) { HDC hScreen = GetDC(NULL); if (hScreen) { HBITMAP hDfb = CreateCompatibleBitmap(hScreen, stBitmap.bmWidth, stBitmap.bmHeight); if (hDfb) { // now let's ensure what we've created is a DIB. if (GetObject(hDfb, sizeof(stBitmap), &stBitmap) && !stBitmap.bmBits) { // ok, we're lucky. Now we have // to transfer the image to the DFB. HDC hMemSrc = CreateCompatibleDC(NULL); if (hMemSrc) { HGDIOBJ hOldSrc = SelectObject(hMemSrc, hBitmap); if (hOldSrc) { HDC hMemDst = CreateCompatibleDC(NULL); if (hMemDst) { HGDIOBJ hOldDst = SelectObject(hMemDst, hDfb); if (hOldDst) Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 51 { // transfer the image using BitBlt // function. It will probably end in the // call to driver's DrvCopyBits function. if (BitBlt(hMemDst, 0, 0, stBitmap.bmWidth, stBitmap.bmHeight, hMemSrc, 0, 0, SRCCOPY)) bConverted = true; // success VERIFY(SelectObject(hMemDst, hOldDst)); } VERIFY(DeleteDC(hMemDst)); } VERIFY(SelectObject(hMemSrc, hOldSrc)); } VERIFY(DeleteDC(hMemSrc)); } } if (bConverted) { VERIFY(DeleteObject(hBitmap)); // it's no longer needed hBitmap = hDfb; } else VERIFY(DeleteObject(hDfb)); } ReleaseDC(NULL, hScreen); } Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 52 } return bConverted; } // This function converts the given bitmap to a DIB. // Returns true if the conversion took place, // false if the conversion either unneeded or unavailable bool ConvertToDIB(HBITMAP& hBitmap) { bool bConverted = false; BITMAP stBitmap; if (GetObject(hBitmap, sizeof(stBitmap), &stBitmap) && !stBitmap.bmBits) { // that is a DFB. Now we attempt to create // a DIB with the same sizes and pixel format. HDC hScreen = GetDC(NULL); if (hScreen) { union { BITMAPINFO stBitmapInfo; BYTE pReserveSpace[sizeof(BITMAPINFO) + 0xFF * sizeof(RGBQUAD)]; }; ZeroMemory(pReserveSpace, sizeof(pReserveSpace)); stBitmapInfo.bmiHeader.biSize = sizeof(stBitmapInfo.bmiHeader); stBitmapInfo.bmiHeader.biWidth = stBitmap.bmWidth; stBitmapInfo.bmiHeader.biHeight = stBitmap.bmHeight; Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 53 stBitmapInfo.bmiHeader.biPlanes = 1; stBitmapInfo.bmiHeader.biBitCount = stBitmap.bmBitsPixel; stBitmapInfo.bmiHeader.biCompression = BI_RGB; if (stBitmap.bmBitsPixel <= 8) { stBitmapInfo.bmiHeader.biClrUsed = 1 << stBitmap.bmBitsPixel; // This image is paletted-managed. // Hence we have to synthesize its palette. } stBitmapInfo.bmiHeader.biClrImportant = stBitmapInfo.bmiHeader.biClrUsed; PVOID pBits; HBITMAP hDib = CreateDIBSection(hScreen, &stBitmapInfo, DIB_RGB_COLORS, &pBits, NULL, 0); if (hDib) { // ok, we're lucky. Now we have // to transfer the image to the DFB. HDC hMemSrc = CreateCompatibleDC(NULL); if (hMemSrc) { HGDIOBJ hOldSrc = SelectObject(hMemSrc, hBitmap); if (hOldSrc) { HDC hMemDst = CreateCompatibleDC(NULL); if (hMemDst) Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 54 { HGDIOBJ hOldDst = SelectObject(hMemDst, hDib); if (hOldDst) { if (stBitmap.bmBitsPixel <= 8) { // take the DFB's palette and set it to our DIB HPALETTE hPalette = (HPALETTE) GetCurrentObject(hMemSrc, OBJ_PAL); if (hPalette) { PALETTEENTRY pPaletteEntries[0x100]; UINT nEntries = GetPaletteEntries(hPalette, 0, stBitmapInfo.bmiHeader.biClrUsed, pPaletteEntries); if (nEntries) { ASSERT(nEntries <= 0x100); for (UINT nIndex = 0; nIndex < nEntries; nIndex++) pPaletteEntries[nEntries].peFlags = 0; VERIFY(SetDIBColorTable(hMemDst, 0, nEntries, (RGBQUAD*) pPaletteEntries) == nEntries); } } } // transfer the image using BitBlt function. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 55 // It will probably end in the // call to driver's DrvCopyBits function. if (BitBlt(hMemDst, 0, 0, stBitmap.bmWidth, stBitmap.bmHeight, hMemSrc, 0, 0, SRCCOPY)) bConverted = true; // success VERIFY(SelectObject(hMemDst, hOldDst)); } VERIFY(DeleteDC(hMemDst)); } VERIFY(SelectObject(hMemSrc, hOldSrc)); } VERIFY(DeleteDC(hMemSrc)); } if (bConverted) { VERIFY(DeleteObject(hBitmap)); // it's no longer needed hBitmap = hDib; } else VERIFY(DeleteObject(hDib)); } ReleaseDC(NULL, hScreen); } } return bConverted; } Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 56 3.2.2. Code đọc và extract frame file video BOOL ExtractAVIFrames(CString szFileName) { AVIFileInit(); PAVIFILE avi; int res=AVIFileOpen(&avi, szFileName, OF_READ, NULL); if (res!=AVIERR_OK) { //an error occures if (avi!=NULL) AVIFileRelease(avi); return FALSE; } AVIFILEINFO avi_info; AVIFileInfo(avi, &avi_info, sizeof(AVIFILEINFO)); CString szFileInfo; szFileInfo.Format("Dimention: %dx%d\n" "Length: %d frames\n" "Max bytes per second: %d\n" "Samples per second: %d\n" "Streams: %d\n" "File Type: %d", avi_info.dwWidth, avi_info.dwHeight, avi_info.dwLength, avi_info.dwMaxBytesPerSec, (DWORD) (avi_info.dwRate / avi_info.dwScale), Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 57 avi_info.dwStreams, avi_info.szFileType); AfxMessageBox(szFileInfo, MB_ICONINFORMATION | MB_OK); PAVISTREAM pStream; res=AVIFileGetStream(avi, &pStream, streamtypeVIDEO /*video stream*/, 0 /*first stream*/); if (res!=AVIERR_OK) { if (pStream!=NULL) AVIStreamRelease(pStream); AVIFileExit(); return FALSE; } //do some task with the stream int iNumFrames; int iFirstFrame; iFirstFrame=AVIStreamStart(pStream); if (iFirstFrame==-1) { if (pStream!=NULL) AVIStreamRelease(pStream); AVIFileExit(); return FALSE; } iNumFrames=AVIStreamLength(pStream); if (iNumFrames==-1) Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 58 { //Error getteing the number of frames inside the stream if (pStream!=NULL) AVIStreamRelease(pStream); AVIFileExit(); return FALSE; } BITMAPINFOHEADER bih; ZeroMemory(&bih, sizeof(BITMAPINFOHEADER)); bih.biBitCount=24; //24 bit per pixel bih.biClrImportant=0; bih.biClrUsed = 0; bih.biCompression = BI_RGB; bih.biPlanes = 1; bih.biSize = 40; bih.biXPelsPerMeter = 0; bih.biYPelsPerMeter = 0; //calculate total size of RGBQUAD scanlines (DWORD aligned) bih.biSizeImage = (((bih.biWidth * 3) + 3) & 0xFFFC) * bih.biHeight ; PGETFRAME pFrame; pFrame=AVIStreamGetFrameOpen(pStream, NULL/*(BITMAPINFOHEADER*) AVIGETFRAMEF_BESTDISPLAYFMT*/ /*&bih*/); //Get the first frame int index=0; for (int i=iFirstFrame; i<iNumFrames; i++) { Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 59 index= i-iFirstFrame; BYTE* pDIB = (BYTE*) AVIStreamGetFrame(pFrame, index); CreateFromPackedDIBPointer(pDIB, index); } AVIStreamGetFrameClose(pFrame); //close the stream after finishing the task if (pStream!=NULL) AVIStreamRelease(pStream); AVIFileExit(); return TRUE; } 3.3. Kết quả thực nghiệm và đánh giá - Giao diện chính của chương trình xác định độ đo tương tự của một ảnh với một trong những khung hình của file video. Hình 3.1 : Giao diện chính của chương trình Sau khi tải ảnh và tải một file video vào -> Kết luận độ tương tự của ảnh đó có trong file video. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 60 Hình 3.2: Kết quả thực nghiệm với ảnh có độ tương tự cao Đối với trường hợp không có ảnh tương tự hoặc độ tương tự nhỏ, chương trình sẽ như sau: Hình 3.3: Kết quả thực nghiệm với ảnh có độ tương tự thấp Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 61 * Đánh giá: Trong chương trình này tôi sử dụng thuật toán so sánh Histogram để đối sánh các điểm ảnh với nhau. Khi đọc 1 ảnh vào chương trình sẽ tự động tính Histogram của ảnh đó, tiếp theo ta đọc một file video vào, và ta nhấn nút seach chương trình sẽ tự tách mỗi frame của file video ra và so sánh với histogram của file ảnh đó, lần lượt cho đến khi hết các Frame và chọn ra frame có độ tương tự lớn nhất để kết luận.. Kết quả cho thấy đây mới chỉ là bước đầu sử dụng thuật toán so sánh hai ảnh với nhau, đây là bước khởi đầu quan trọng trong quá trình đối sánh ảnh để sau này phát triển tốt hơn. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 62 PHẦN KẾT LUẬN Thực tế của việc ứng dụng các thuật toán trong xử lý ảnh là rất lớn, rất nhiều các nhà lập trình đã nghiên cứu để đưa ra những phương pháp tìm kiếm, đối sánh ảnh nhằm ứng dụng rất lớn trong công tác an ninh, quốc phòng… Với thời gian còn hạn chế, trong Luận văn này tôi đã bước đầu tìm hiểu một số thuật toán như Transnable Similarity Measure (TMS) và Histogram để đối sánh một ảnh với từng frame trong file video. Đây cũng có thể được coi là nền tảng trong quá trình xử lý ảnh mà tôi đã tích luỹ được. Tuy nhiên trong quá trình nghiên cứu, mức độ thành công của tất cả các thuật toán tôi nghiên cứu là chưa được thành công lắm, chính vì vậy nếu có điều kiện tôi sẽ tiếp tục nghiên cứu và cài đặt thành công các thuật toán này một cách tốt nhất. Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 63 TÀI LIỆU THAM KHẢO [1]. Đỗ Năng Toàn, Phạm Việt Bình (2007), Giáo trình môn học Xử lý ảnh. [2]. Lương Mạnh Bá, Nguyễn Thanh Thủy (2002), Nhập Môn Xử lý ảnh số, Nxb Khoa học và Kỹ thuật, 2002. [3]. Anil K.Jain (1989), Fundamental of Digital Image Processing, Engwood cliffs. Prentice Hall [4]. J.R.Paker (1997), Algorithms for Image processing and Computer. John Wiley & Sons, Inc. Vision [5]. Randy Crane (1997), A simplified approach to image processing, Prentice-Hall, Inc. [6]. John C.Russ (1995), The Image Procesing Handbook. CRC Press, Inc. [7]. Adrian Low (1991), Introductory Computer Vision and Image, Copyright (c) 1991 by McGrow Hill Book Company Processing (UK) Limited. [8]. T. Pavlidis (1982), Algorithms for Graphics and Image Processing, Computer Science Press. [9]. Lương Xuân Cương, Ðỗ Xuân Tiến, Ðỗ Trung Tuấn (2004), “Kỹ thuật nâng cao khả năng phân đoạn dữ liệu video ứng dụng trong e-learning”, Báo cáo khoa học tại Hội thảo quốc gia “Một số vấn đề chọn lọc của Công nghệ thông tin”, Đà Nẵng, tháng 8/2004. [10]. Morpher Page, Website Sugano, M., Nakajima, Y., Yanagihara, H., Yoneyama, A., A fast scene change detection on MPEG coding parameter domain, International Conference on Image Processing, 1998. ICIP 98. Proceedings. 1998, Volume: 1, 1998, pp. 888 – 892 Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên 64 [11]. Nagasaka, A., Tanaka, Y., Automatic Video Indexing and Full-Video Search for Object Appearances, Visual Database Systems, II, Elsevier Science Publishers, 1992, pp. 113 – 127 [12]. Novak, C.L.; Shafer, S.A., Anatomy of a color histogram, Proceedings of the IEEE Computer Society Conference on Computer Vision and Pattern Recognition, 1992, pp. 599 – 605 [13]. Shahraray, B., Scene Change Detection and Content-Based Sampling of Video Sequences, Digital Video Compression: Algorithms and Technologies, A. Rodriguez, R. Safranek, E. Delp, Editors, Proc. SPIE 2419, 1995, pp. 2–13 [14]. Sawhney, H.S., Hafner, J.L., Efficient color histogram indexing, Proceedings of the IEEE International Conference on Image Processing, Volume: 2 , 1994 , pp. 66 – 70 [15]. Swanberg, D., Shu, C., & Jain, R. (1993). Knowledge-guided parsing in video databases. Proceedings. of SPIE Symposium on Electronic Imaging: Science and Technology, San Jose, CA, 13-24.

Các file đính kèm theo tài liệu này:

  • pdfLuận văn-Nghiên cứu một số kỹ thuật xác định độ đo tương tự và ứng dụng.pdf
Luận văn liên quan