Nói về Image Pyramid


Nói về Image Pyramid

Nói về Image Pyramid

Image Pyramid, hay được gọi chính xác là "pyramid representation of image" là một kỹ thuật xử lý hình ảnh nhằm hiển thị một hình ảnh duy nhất bằng một tập hợp các "tầng" ảnh.

Vậy ta cần Pyramid làm gì?

Trong thực tế, khi hầu hết mọi người nói về "hình ảnh" (image) thì đa phần đang nhắc đến thứ gọi là "spatial domain" (miền không gian), khi mà hình ảnh được biểu diễn dưới các đơn vị pixel. Trong spatial domain, các phép toán sẽ thực thi trực tiếp lên các pixel này.
Có khá nhiều phép toán xử lý trên spatial domain, trong đó phổ biến nhất chính là filter (bộ lọc). Một số filter phổ biến thường được sử dụng là low-pass / high-pass filter, median filter, adaptive filter,.... Hầu hết các filter trên sẽ trích xuất thông tin từ mỗi vị trí trên ảnh (các pixel), tuy nhiên vấn đề là với các hình ảnh có độ phức tạp cao (chứa nhiều thông tin phức tạp) thì việc này cơ bản sẽ khá khó khăn.
 
Bản đồ Quảng Trị khi kết hợp band 5-4-3 (color infrared (vegetation)) từ vệ tinh Landsat 8 với độ phân giải 100m/px. Thảm thực vật có màu đỏ, và càng đậm chứng tỏ càng khoẻ mạnh. Đây là một bức ảnh có độ chi tiết cao và khá phức tạp.
 
Trong lý thuyết tín hiệu (signal theory), mọi tín hiệu đều có thể được biểu diễn dưới dạng kết hợp tuyến tính của sin và cos, tất nhiên là ảnh - một dạng tín hiệu cũng ngoại lệ. Một trong những phép biến đổi khá nổi tiếng trong toán học là Fourier Transform (biến đổi Fourier), về cơ bản nó biến đổi một hàm số hoặc một tín hiệu theo miền thời gian sang miền tần số, chính xác là tách hàm số thành tổng các hàm sin và cos với các tần số khác nhau.
Ví dụ khi chơi guitar, bạn chơi hợp âm C major, về cơ bản nó có 3 notes: C - E - G. Mỗi note sẽ có một tần số tương ứng với cao độ, giả sử ta chơi 3 notes lần lượt (được gọi là arpeggio) C3 - E3 - G3 thì tần số tương ứng là 130.81 - 164.81 - 196.00 (Hz), khi đó ta có thể thu được tín hiệu khá đơn giản. Nhưng nếu chơi cùng một lúc (chord - hợp âm), khi đó các tần số sẽ bị trộn vào nhau và để có thể xác định dễ hơn, ta có thể áp dụng biến đổi Fourier nhằm tìm ra các note tương ứng.
Cái thế tay này hầu như ai cũng biết, gồm 5 notes: C3 - E3 - G3 - C4 - E4. Nguồn: Trong ảnh
Cái thế tay này hầu như ai cũng biết, gồm 5 notes: C3 - E3 - G3 - C4 - E4. Nguồn: Trong ảnh
Âm thanh khi được biến đổi thành tần số tương ứng. Nguồn: DOI: 10.21125/edulearn.2018.2627
Âm thanh khi được biến đổi thành tần số tương ứng. Nguồn: DOI: 10.21125/edulearn.2018.2627
Biến đổi này rất quan trọng trong xử lý hình ảnh, nếu ta áp dụng biến đổi này lên spatial domain, ta sẽ thu được các tần số tương ứng trong ảnh gốc và nó được gọi là "frequency domain". Tần số thấp thường thể hiện chi tiết mịn (smooth detail), hình dạng (shape) và màu sắc (color) còn tần số cao biểu thị chi tiết cao (fine detail) và nhiễu (noise) trong hình ảnh.
Ảnh trên sau khi áp dụng biến đổi Fourier. Nguồn: projectrhea.org
Ảnh trên sau khi áp dụng biến đổi Fourier. Nguồn: projectrhea.org
Việc áp dụng frequency domain tạo nên nhiều cách xử lý ảnh tốt hơn, giả sử ta có thể biến đổi và cắt tần số cao trong bức ảnh để giảm nhiễu (noise reduction), nhưng đồng thời dễ bị mất đi nhiều đối tượng có độ chi tiết cao trong hình ảnh. Vấn đề của frequency domain chính là nó sẽ trộn tất cả tần số từ mọi đối tượng trong ảnh với nhau, khiến cho ta không dễ xác định được đối tượng nào trên ảnh mà ta muốn xử lý (loss of locality - mất vị trí). Việc xử lý từng tần số cũng dễ ảnh hưởng đến toàn bộ các đối tượng khác trong ảnh, trong khi với spatial domain ta có thể dễ dàng nhìn thấy và xác định đối tượng đó.
Mỗi loại đều có ưu và nhược khác nhau, và cái ta cần là ưu điểm của cả 2. Kết hợp ưu điểm của cả spatial và frequency domain, ta sẽ có một loại biểu diễn mới nữa gọi là spatial-frequency domain. Nó cho phép chúng ta xử lý các tần sốriêng biệt nhưng cũng đồng thời cũng bảo toàn vị trí của các thông tin trên ảnh.
Và Image Pyramid nằm trong loại spatial-frequency domain này.

Xây dựng Image Pyramid

Đầu tiên, ta cần phải biết thực sự thì Image Pyramid là gì từ  đống lý thuyết khô khan trên. Về cơ bản, nó chính là biểu diễn hình ảnh dựa trên một tập các hình ảnh mà mỗi ảnh chứa các dải tần riêng biệt.
Ví dụ với một bức ảnh bất kỳ, ta có thể tách nó thành 3 phần: một ảnh chứa dải tần thấp (smooth detail), ảnh thứ 2 chứa dải tần trung (detail) và ảnh cuối dải tần cao (fine detail).
Về cơ bản, có 2 cách để xây dựng Image Pyramid. Thứ nhất, ta có thể áp dụng nhiều filters, mỗi filter cho từng band và tiến hành tích chập (convolution) với hình ảnh. Nghe có vẻ hay, nhưng vấn đề chính nằm ở tích chập, để thực hiện phép toán này cần nhiều công sức cũng như kha khá thời gian để thực hiện.
Nguồn: freecodecamp
Nguồn: freecodecamp
Các tiếp cận còn lại thú vị hơn khá nhiều. Thay vì ta dùng nhiều filters cho ảnh, ta có thể dùng nhiều ảnh để tiến hành tích chập trên 1 filter duy nhất. Nghe có vẻ hay, vậy nhiều hình ảnh ta lấy ở đâu? Cách đơn giản nhất chính là giảm kích thước ảnh gốc ở các mức độ khác nhau và ta thu được nhiều hình ảnh dựa trên ảnh gốc. Nhìn chung, phương pháp này tối ưu hơn phương pháp 1 khá nhiều.
Nguồn: Slideshare
Nguồn: Slideshare
Một trong kiểu xây dựng Image Pyramid phổ biến là Gaussian Pyramid. Về cơ bản, các hình ảnh được thu nhỏ bằng cách sử dụng giá trị trung bình Gaussian (Gaussian blur). Mỗi pixel chứa điểm trung bình cục bộ tương ứng với các pixel lân cận ở cấp thấp hơn của kim tự tháp. Quá trình thu nhỏ này được gọi là "Reduce operation".
Gaussian Pyramid được áp dụng trong một kỹ thuật gọi là texture synthesis, được nghiên cứu trong computer graphics, 3D graphics,..., vậy còn với vấn đề trong bài viết này, nó có ứng dụng gì nhiều không?
Không.
Gaussian Pyramid về bản chất sử dụng low-pass filter, chúng ta chưa làm gì được nhiều với từng dải tần riêng (vốn là tính chất của frequency domain). Vì vậy, ta cần phải xây dựng một kiểu pyramid mới, và nó được gọi là "Laplacian Pyramid”. Ngoài Carl Friedrich Gauss vĩ đại của toán học mà hầu như ai cũng biết, ta lại gặp một nhân vật quen thuộc là Pierre-Simon Laplace (phương trình Laplace, toán tử Laplace,...)
Cách xây dựng Laplacian Pyramid từ Gaussian Pyramid. Nguồn: paperswithcode.com
Cách xây dựng Laplacian Pyramid từ Gaussian Pyramid. Nguồn: paperswithcode.com
Mỗi layer của Laplacian Pyramid được xây dựng từ hiệu của 2 lớp liên tiếp trong Gaussian Pyramid. Trong quá trình thực hiện, ảnh ở layer trên phải được điều chỉnh để bằng với kích thước của layer dưới, quá trình này được gọi là "Expand operation".
Sau khi thực hiện xong, mỗi layer của kim tự tháp giờ đều chứa các thông tin của dải tần tương ứng (tính chất của frequency), cũng như thông tin cục bộ của ảnh gốc (tính chất của spatial). Vậy là ta đã có được spatial-frequency domain.
Nếu ta cộng lần lượt tất cả các layer của kim tự tháp lại, expand tại mỗi layer, ta sẽ thu được ảnh gốc, quá trình này được gọi là "reconstruction".
Nguồn: oreilly.com
Nguồn: oreilly.com
Image Pyramid là một phương pháp biểu diễn hình ảnh khá hay, và tính toán trên kiểu biểu diễn này cũng bớt phức tạp hơn, phù hợp trong việc xử lý ảnh. Google Earth Engine cũng ứng dụng Image Pyramid để xử lý Scale. Hầu như mọi thứ liên quan đều đã có các thư viện hỗ trợ, nhưng đôi khi làm toán cũng vui, biến đổi Fourier, biến đổi tích phân, tích chập tuần hoàn, rời rạc, toán tử Laplace,....
 
Tiếc là tôi lại chẳng giỏi toán.

Tài liệu tham khảo:

Tham khảo chính: "Pyramid methods in image processing", E. H. Adelson | C. H. Anderson | J. R. Bergen | P. J. Burt | J. M. Ogden
Khác: