Đánh giá hiệu năng của hệ thống tra cứu ảnh

Một phần của tài liệu tìm hiểu phương pháp tra cứu ảnh theo nội dung (Trang 52 - 71)

Để đánh giá hiệu năng của hệ thống tra cứu, ngƣời ta đƣa ra hai số đo đó là độ thu hồi (recall) và độ chính xác (precision). Các số đo này đƣợc mƣợn từ hệ thống tra cứu thông tin truyền thống. [7]

Đối với một truy vấn q, tập hợp các ảnh trong cơ sở dữ liệu thích hợp với truy vấn q đƣợc ký hiệu là R(q) còn kết quả tra cứu của truy vấn q đƣợc ký hiệu là Q(q).

Độ chính xác của việc tra cứu đƣợc định nghĩa là tỉ lệ những kết quả thu

đƣợc thực sự thích hợp với truy vấn. ) ( ) ( ) ( q Q q R q Q precision   (2.56)

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Độ thu hồi là tỉ lệ những kết quả thích hợp do truy vấn trả lại:

) ( ) ( ) ( q R q R q Q recall   (2.57)

Thông thƣờng phải có sự thoả hiệp giữa hai số đo này bởi vì nếu muốn tăng cƣờng số đo này thì lại phải chịu giảm số đo kia và ngƣợc lại. Trong các hệ thống tra cứu điển hình thì độ thu hồi có xu hƣớng tăng lên khi số lƣợng các kết quả thu đƣợc tăng lên trong khi đó thì độ chính xác dƣờng nhƣ lại bị giảm đi.

Ngoài ra, việc lựa chọn R(q) lại rất không ổn định do sự đa đạng của cách hiểu về một bức ảnh. Hơn nữa, khi số lƣợng ảnh thích hợp lại lớn hơn số lƣợng ảnh hệ thống tìm đƣợc thì lúc đó khái niệm độ thu hồi trở thành vô nghĩa.

Do đó, độ chính xác và độ thu hồi chỉ là các mô tả ở dạng thô về hiệu năng của một hệ thống truy vấn mà thôi.

Gần đây MPEG7 có khuyến nghị một cách đánh giá mới về hiệu năng của các hệ thống tra cứu gọi là ANMRR (average normalized modified retrieval rank) . Theo cách này độ chính xác và độ thu hồi đƣợc kết hợp thành một số đo duy nhất.

Ký hiệu số lƣợng ảnh hoàn toàn đúng với truy vấn q là N(q) và số lƣợng lớn nhất của các ảnh hoàn toàn đúng với tất cả Q truy vấn tức là max{N(q1), N(q2),...,N(qQ)} là M. Sau đó đối với mỗi truy vấn q thì mỗi bức ảnh hoàn toàn đúng

k đƣợc gán một giá trị xếp hạng rank(k) giá trị này là thứ hạng của nó trong số

những ảnh hoàn toàn đúng nếu ảnh đó nằm trong K kết quả truy vấn đầu tiên (ở đây K = min{4N(q), 2M}) hoặc có giá trị K+1 nếu ảnh đó không nằm trong K kết quả truy vấn đầu tiên.

Thứ hạng trung bình AVR(q) đối với truy vấn q đƣợc tính nhƣ sau:

  ( ) 1 ( ) ) ( ) ( N q k N q q rank q AVR (2.58)

Thứ hạng tra cứu sửa đổi MRR(q) đƣợc tính là:

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

MRR(q) nhận giá trị 0 khi tất cả các ảnh hoàn toàn đúng đều nằm trong K kết

quả truy vấn đầu tiên.

Thứ hạng tra cứu sửa đổi và chuẩn hoá NMRR(q) nhận giá trị từ 0 đến 1

đƣợc tính nhƣ sau: ) ( * 5 . 0 5 . 0 ) ( ) ( q N K q MRR q NMRR    (2.60)

Thứ hạng tra cứu sửa đổi và chuẩn hoá trung bình ANMRR xét trên tất cả

các truy vấn Q là:    Q q NMRR q Q ANMRR 1 ( ) 1 (2.61)

CHƢƠNG III: CÀI ĐẶT CHƢƠNG TRÌNH ỨNG DỤNG 3.1. Giới thiệu bài toán tra cứu ảnh

Bài toán tìm kiếm ảnh đƣợc phát biểu nhƣ sau: với một ảnh hoặc bằng phần mềm phác thảo có sẵn (ảnh truy vấn) hãy tìm các ảnh tƣơng tự trong cơ sở dữ liệu ảnh. Bài toán này đƣợc gọi là tìm kiếm ảnh dựa trên nội dung. Mục đích của việc tìm kiếm có thể chính là ảnh đích hoặc các thông tin liên quan đến ảnh truy vấn.

Các yêu cầu chính với phƣơng pháp giải quyết bài toán này là: thứ nhất phải tìm kiếm chính xác và trả về kết quả trong thời gian nhanh nhất có thể chấp nhận đƣợc, thứ hai là hoạt động trên một cơ sở dữ liệu ảnh lớn. Do lƣợng thông tin chứa trong mỗi bức ảnh là rất lớn nên để đáp ứng đƣợc cả hai yêu cầu trên vẫn là một vấn đề đáng quan tâm và đòi hỏi giải quyết triệt để trong tƣơng lai.

Tìm kiếm ảnh là công việc hết sức khó khăn, từ ảnh truy vấn đƣa vào (ảnh mẫu hoặc phác họa) chƣơng trình phải tiến hành so sánh ảnh cần tìm kiếm với các ảnh có trong cơ sở dữ liệu. Việc so sánh hai ảnh không thực hiện trực tiếp nhƣ so sánh văn bản, để so sánh hai ảnh phải dựa vào các đặc trƣng của ảnh nhƣ màu sắc, kết cấu (texture), hình dạng. Các đặc tính này có thể dễ nhận thấy bằng mắt thƣờng nhƣng để máy nhận biết đƣợc các đặc tính đó là rất khó.

Từ những yêu cầu và mục đích trên đặt ra một bài toán tìm kiếm ảnh nhƣ sau: tìm trong một cơ sở dữ liệu ảnh những ảnh có nội dung (màu sắc, kết cấu) giống với ảnh mẫu nhất, sau đó sắp xếp theo thứ tự giảm dần của độ tƣơng tự. Kết quả thu đƣợc là những bức ảnh gần với ảnh mẫu nhất và thỏa mãn độ sai khác theo yêu cầu của ngƣời sử dụng.

3.2. Phân tích bài toán

Nhiệm vụ của bài toán là xây dựng hệ thống tra cứu ảnh có một số các chức

năng sau:

Khi ngƣời sử dụng cung cấp một ảnh mẫu cần tra cứu có định dạng thông dụng JPEG, BMP, GIF. Hệ thống có nhiệm vụ tìm kiếm trong một cơ sở dữ liệu ảnh

đã có sẵn và cho ra một danh sách tất cả các ảnh tƣơng tự nhƣ ảnh mẫu theo thứ tự ảnh nào đƣợc coi là giống với ảnh mẫu hơn thì đƣợc xếp phía trên.

Ngƣời sử dụng có thể lựa chọn theo một trong hai đặc điểm để so sánh: so sánh theo màu sắc, so sánh theo hình dạng hoặc kết hợp cả hai đặc điểm để so sánh.

Ngƣời sử dụng có thể thiết lập khoảng cách ngƣỡng cho từng đặc điểm: chƣơng trình chỉ trả lại các kết quả mà khoảng cách giữa ảnh kết quả và ảnh mẫu không vƣợt quá ngƣỡng.

Hoặc ngƣời sử dụng có thể qui định số lƣợng ảnh kết quả trả lại. Để đơn giản, chúng ta chỉ xét bài toán trong những hạn chế sau:

Chỉ xét những ảnh có một đối tƣợng ảnh duy nhất trên nền có màu đồng nhất.

Các đối tƣợng ảnh có hình dạng không quá phức tạp và có đƣờng biên tƣơng đối đơn giản.

Ảnh có định dạng phổ biến JPG, BMP, GIF, PCX, đã qua khâu tiền xử lý để loại bỏ nhiễu.

3.3. Xây dựng chƣơng trình Content based image retrieval 3.3.1. Mô hình tổng quát 3.3.1. Mô hình tổng quát

Hình 3.1: Sơ đồ khối tổng quát của chƣơng trình

Đọc ảnh mẫu Trích chọn đặc điểm Tạo Véc tơ đặc trƣng Đọc ảnh từ

cơ sở DL Tạo Véc tơ đặc trƣng

Tính khoảng cách Thêm vào danh sách ở vị trí thích hợp Trích chọn đặc điểm

Sơ đồ này thể hiện các khối chức năng chính của mỗi modul chƣơng trình:

Đọc ảnh: sử dụng các thƣ viện chuẩn của Windows để đọc ảnh mẫu hoặc ảnh trong cơ sở dữ liệu vào một cấu trúc DIB.

Trích chọn đặc điểm: tuỳ thuộc vào đặc điểm cần trích chọn là màu sắc hay hình dạng mà khối này sử dụng các thuật toán trích chọn tƣơng ứng.

Tạo véc tơ đặc trƣng: các đặc điểm đƣợc trích chọn ra dƣới dạng các véc tơ đặc trƣng nhiều chiều.

Tính khoảng cách: dựa vào một trong số những phƣơng pháp tính khoảng cách đã đƣợc trình bày ở chƣơng 2 để tính khoảng cách tƣơng ứng giữa các véc tơ đặc trƣng của ảnh mẫu và ảnh trong cơ sở dữ liệu.

Cuối cùng dựa theo khoảng cách đã tính đƣợc, chƣơng trình sẽ sắp xếp các kết quả theo chiều giảm dần của độ tƣơng tự giữa các véc tơ đặc trƣng.

3.3.2. Tra cứu theo hình dạng

Hình 3.2: Sơ đồ khối phần tra cứu ảnh theo hình dạng

 Ảnh mẫu đƣợc đọc vào cấu trúc DIB bằng hàm DisplayImage

 Sử dụng thuật toán dò biên gián tiếp để phân vùng ảnh.

 Thực hiện co/giãn (resample) để chuẩn hoá kích thƣớc (cả hai kích thƣớc đều là luỹ thừa của 2) trƣớc khi sao chép sang một ma trận số phức làm đầu vào của hàm biến đổi Fourier nhanh FFT.

Đọc ảnh mẫu Resample 256x256 FFT Tạo Véc tơ đặc trƣng Đọc ảnh từ cơ sở DL Resample 256x256 FFT Tạo Véc tơ đặc trƣng Tính k/c Euclide Thêm vào danh sách ở vị trí thích hợp Dò biên Dò biên

 Hàm FFT trả lại một ma trận số phức.

 Việc tạo véc tơ đặc trƣng của ảnh đƣợc thực hiện trên ma trận số phức này. Véc tơ đặc trƣng là một vector có 256 chiều.

 Đọc từng ảnh trong cơ sở dữ liệu, thực hiện các bƣớc giống nhƣ với ảnh mẫu để đƣợc vector đặc trƣng của ảnh vừa đọc.

 So sánh vector đặc trƣng của ảnh mẫu và ảnh đọc từ cơ sở dữ liệu bằng cách tính khoảng cách Euclide của 2 vector đặc trƣng bằng hàm

GetShapeDistance.

 Thêm ảnh vừa đọc vào danh sách ảnh tìm thấy, ảnh có sai khác so với ảnh mẫu nhỏ hơn đƣợc xếp lên trên.

3.3.2.1. Đọc ảnh

Ảnh đƣợc đọc vào cấu trúc DIB và hiển thị bằng thủ tục DisplayImage, đầu vào là tên và đƣờng dẫn đến file cần đọc, nếu đọc ảnh thành công thủ tục DisplayImage hiển thị ảnh lên khung ảnh đƣợc chỉ định.

Việc thao tác với cấu trúc DIB đƣợc thực hiện thông qua cấu trúc DIBSection đã đƣợc định nghĩa trong thƣ viện GDI32 của Windows [14],[18].

3.3.2.2. Dò biên đối tƣợng ảnh

Phần dò biên đối tƣợng ảnh sử dụng thuật toán dò biên gián tiếp bằng cách xác định chu tuyến của đối tƣợng ảnh nhƣ đƣợc trình bày ở chƣơng 2.

3.3.2.3. Resample

Chúng ta đã biết là để thực hiện biến đổi Fourier nhanh thì kích thƣớc của dãy số đầu vào phải là luỹ thừa của 2. Tuy nhiên các ảnh cần đọc lại có số điểm ảnh khác nhau và thƣờng là không thoả mãn yêu cầu này, vì vậy thủ tục Resample phải thực hiện một phép nội suy để thêm/bớt điểm ảnh để đƣợc một ảnh mới có số điểm ảnh thoả mãn yêu cầu mà không làm thay đổi chất lƣợng ảnh. Các điểm ảnh đƣợc thêm vào theo nguyên tắc nội suy.

Màu và mật độ của các điểm ảnh nội suy đƣợc tính toán dựa trên giá trị của các điểm ảnh có sẵn ở trong ảnh.

Có nhiều cách để xây dựng thủ tục Resample, trong đó có 3 phƣơng pháp thông dụng nhất:

Nearest Neighbor: điểm ảnh mới đƣợc sinh ra dựa vào thông tin của các điểm ảnh ở một phía của điểm ảnh mới, đây là phƣơng pháp resample nhanh nhất nhƣng độ chính xác thấp nhất (trong 3 phƣơng pháp).

Bilinear: lấy thông tin từ những điểm ảnh phía trên và bên cạnh điểm ảnh mới. Chất lƣợng ảnh mới tốt hơn so với phƣơng pháp Nearest Neighbor.

Bicubic: Là phƣơng pháp chính xác nhất vì thông tin về điểm ảnh mới đƣợc suy ra từ 8 điểm ảnh xung quanh.

Trong chƣơng trình này chúng tôi sử dụng phƣơng pháp đơn giản nhất Nearest Neighbor. Kích thƣớc mảng dữ liệu đầu ra là 256×256 phần tử.

3.3.2.4. Biến đổi Fourier nhanh

Hàm biến đổi FFT đƣợc cải tiến từ chƣơng trình của Randy Crane liệt kê trong cuốn "A Simplified Approach to Image Processing" [4].

Đầu vào là một ma trận số phức 2 chiều đƣợc sinh ra từ ma trận điểm ảnh đã đọc bằng cách gán phần ảo của tất cả các số phức bằng 0, phần thực đƣợc gán bằng giá trị của điểm ảnh.

Đầu ra là ma trận số phức hai chiều biểu diễn khai triển Fourier của ma trận đầu vào.

Trong hàm FFT 2 chiều (hàm twoD_FFT() ), từng hàng của ma trận đầu vào đƣợc biến đổi Fourier bằng hàm biến đổi 1chiều (hàm oneD_FFT() ), sau đó mới tính FFT 1 chiều cho các cột.

Hai hàm cơ sở để xây dựng oneD_FFT là Scramble() và Butterflies(). Trong đó Scramble() sử dụng để sắp xếp lại dãy đầu vào theo thứ tự đảo bit, còn hàm Butterflies() là thuật toán cơ sở, đƣợc gọi đệ qui để tính FFT.

3.2.2.5. Tạo véc tơ đặc trƣng hình dạng cho ảnh

Véc tơ đặc trƣng của ảnh là một vector 256 chiều, chứa 256 giá trị số double. double* m_Signature;

m_Signature = new double[256]; Hàm sinh chữ ký GenerateSignature():

Đầu vào: Ma trận vuông kích thƣớc 256x256 các số phức (sinh ra do hàm biến đổi FFT 2 chiều twoD_FFT()) biểu diễn ảnh trong miền tần số.

Đầu ra: vector chữ ký 256 chiều hay là một mảng 256 số double là signature của ảnh.

Thuật toán:

Tính modul (magnitude) của từng phần tử trong mảng hai chiều 256x256 phần tử theo công thức: 2 2 ) , Im( ) , Re( ) , (i j i j i j Magnitude  

trong đó: Magnitude(i,j) là modul của số phức tại vị trí hàng i, cột j của ma trận, Re(i,j) là phần thực của số phức tại vị trí hàng i và cột j, Im(i,j) là phần ảo của số phức tại vị trí hàng i, cột j.

Chia ảnh đầu vào thành những khối kích thƣớc 16x16. Khởi tạo mảng image_Signature[] gồm 256 phần tử Tính signature cho từng khối theo công thức:

        15 0 15 0 ) ( ), ( _ i j j iBlockCol i iBlockRow Mag Signature block

Trong đó: block_Signature là giá trị signature của khối, iBlockRow (0 - 255) là chỉ số hàng của phần tử đầu tiên trong khối, iBlockCol (0 - 255) là chỉ số cột của phần tử đầu tiên của khối, i là chỉ hàng của phần tử trong khối (i = 0,...,15) , j là chỉ số cột của phần tử trong khối (j = 0,...,15). Mag[i,j] là modul của số phức tại vị trí hàng i, cột j của ma trận đầu vào.

Lƣu chữ ký block_Signature đƣợc lƣu vào mảng image_Signature[];

Sau khi tính xong signature cho cả 256 khối, tiến hành chuẩn hóa mảng image_Signature[].

3.3.2.6. So sánh ảnh bằng cách tính khoảng cách Euclide

Khoảng cách giữa ảnh Query_Image và ảnh Found_Image đƣợc định nghĩa là khoảng cách Euclide giữa hai chữ ký query_Signature[] và found_Signature[] theo công thức:     255 0 2 ]) [ _ ] [ _ ( i i Signature query i Signature found diff

3.3.3. Tra cứu theo màu sắc

Hình 3.3: Sơ đồ khối phần tra cứu ảnh theo màu sắc

Sử dụng phƣơng pháp histogram màu nhƣ trình bày trong chƣơng 2.

Ảnh mẫu đƣợc đọc vào cấu trúc DIB và hiển thị bằng thủ tục DisplayImage Giảm số lƣợng bin màu xuống 256 bằng cách chuyển đổi màu thực của mỗi điểm ảnh thành một trong số những màu trong bảng màu chuẩn của Windows bằng hàm GetClosetIndex.

Tính toán số điểm ảnh của từng bin màu bằng hàm GenerateColorSignature, thu đƣợc một véc tơ 256 chiều chính là véc tơ đặc trƣng màu sắc của ảnh.

Làm các bƣớc tƣơng tự nhƣ trên với từng ảnh trong cơ sở dữ liệu.

Tính khoảng cách Euclide giữa véc tơ đặc trƣng của ảnh mẫu và từng ảnh trong cơ sở dữ liệu bằng hàm GetColorDistance sắp xếp vào trong danh sách với khoảng cách nhỏ nhất đƣợc xếp trƣớc tiên.

3.3.4. Sử dụng chƣơng trình Content based image retrieval

Khởi động chƣơng trình, chọn file ảnh mẫu, ảnh mẫu sẽ đƣợc hiển thị ô khung "Query Image"

Chọn phƣơng pháp so sánh: bằng hình dạng hay bằng màu sắc, nhập số đo khoảng cách tối đa (giá trị ngƣỡng) trong hộp Similarity Distance.

Đọc ảnh mẫu Tính histogram màu Đọc ảnh từ cơ sở DL Tính k/c Euclide Thêm vào danh sách ở vị trí thích hợp Chuyển đổi 256 màu Tính histogram màu Chuyển đổi 256 màu

Nhấn nút Find, chƣơng trình sẽ yêu cầu ngƣời dùng chọn thƣ mục chứa các file ảnh cần tìm. Chƣơng trình sau đó sẽ liệt kê tất cả các ảnh có khoảng cách Euclide nhỏ hơn giá trị ngƣỡng theo thứ tự tăng dần của khoảng cách Euclide, những ảnh đƣợc coi là giống hơn đƣợc xếp trƣớc. Khi chọn một ảnh trong danh sách ảnh tìm thấy (Found Image List), chƣơng trình sẽ hiển thị ảnh đó trong khung Results Image.

Hình 3.4 là một số kết quả chạy chƣơng trình để tìm kiếm các ảnh tƣơng tự với ảnh mẫu.

3.4. Khả năng mở rộng của chƣơng trình 3.4.1. Những hạn chế của chƣơng trình 3.4.1. Những hạn chế của chƣơng trình

Chƣơng trình đƣợc giới thiệu mới chỉ đƣa ra một thuật toán khá đơn giản để trích chọn đặc điểm (sinh véc tơ đặc trƣng) nên chắc chắn sẽ không thể cho kết quả

Một phần của tài liệu tìm hiểu phương pháp tra cứu ảnh theo nội dung (Trang 52 - 71)

Tải bản đầy đủ (PDF)

(71 trang)