3. Bố cục của luận văn
2.2. Thuật toán bóp méo ảnh
2.2.1. Giới thiệu
Bóp méo ảnh (Image Wapring) là một kỹ thuật đƣợc sử dụng nhiều trong đồ hoạ máy tính. Nó đóng vai trò quan trọng trong một số ngành nhƣ: ánh xạ bề mặt, biến hình, tạo bề mặt,…Ngoài ra, các kết quả của nó còn có nhiều ý nghĩa trong các ngành xử lý ảnh, cảm ứng từ xa, thƣ giãn-giải trí,…
Bóp méo ảnh thực hiện việc biến đổi hình học giữa hai ảnh: ảnh nguồn và ảnh đích. Sự biến đổi hình học định nghĩa mối quan hệ giữa các điểm ảnh nguồn và điểm ảnh đích. Mối quan hệ này có thể đƣợc xác định bằng các hàm toán học đƣợc áp dụng trên toàn bộ ảnh hoặc chỉ trên một vùng ảnh nào đó. Trong nhiều trƣờng hợp ngoài việc xác định các hàm toán học bóp méo ảnh, phải xác định thêm các đặc trƣng sử dụng trong quá trình bóp méo.
Có rất nhiều tiêu chí để phân lớp các thuật toán bóp méo ảnh. Nếu phân chia theo luồng dữ liệu biến đổi thì có thể phân lớp bóp méo ảnh ra thành 2 lớp: các phƣơng pháp tính xuôi và các phƣơng pháp tính ngƣợc. Trong các phƣơng pháp tính
xuôi, các điểm ảnh trên ảnh nguồn đƣợc xử lý theo từng dòng quét và các kết quả đƣợc thiết lập trên ảnh đích. Trong khi đó các phƣơng pháp tính ngƣợc ánh xạ ngƣợc các điểm ảnh đích tới các điểm ảnh nguồn. Đối với các ảnh số thì việc thực thi theo các phƣơng pháp tính xuôi thƣờng không cho kết quả tốt. Do vậy, hầu hết các thuật toán hiện nay đều là các phƣơng pháp tính ngƣợc.
Thuật toán tính xuôi Thuật toán tính ngƣợc for(int u=0;u<umax;u++)
{
for(int v=0; v<=vmax; v++) {
float x=fx(u,v); float y=fy(u,v); dst(x,y)=src(u,v); } } for(int x=0;x<=xmax;x++) { for(int y=0;y<=ymax;y++) {
float u=f-1x(x,y); float v= f-1y(x,y); dst(x,y)= src(u,v); }
}
Nếu phân biệt theo miền tác động của thuật toán bóp méo thì ta có 2 phƣơng pháp: phƣơng pháp tác động toàn cục và phƣơng pháp tác động cục bộ. Phƣơng pháp tác động toàn cục là phƣơng áp dụng thuật toán, tiêu chí nhƣ nhau đối với mọi điểm ảnh. Đối với phƣơng pháp cục bộ thì việc bóp méo ảnh chỉ áp dụng trên một số vùng ảnh, các vùng khác đƣợc giữ nguyên.
Các thuật toán bóp méo toàn cục có tốc độ xử lý tƣơng đối nhanh, tuy nhiên chỉ áp dụng đƣợc đối với các yêu cầu đơn giãn nhƣ co, giãn ảnh, bóp méo cả ảnh thành hình tứ giác hay một số hiệu ứng khác nhƣ mắt cá, kính núp,…Thuật toán bóp méo ảnh cục bộ là thuật toán cho kết quả ấn tƣợng hơn. Tuy nhiên, để có thể bóp méo cục bộ theo từng vùng thì nó đòi hỏi phải xác định thêm tập các đặc trƣng. Đặc
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
29
trƣng này có thể tập các đoạn thẳng, điểm, lƣới tam giác,…Ngoài ra, việc xây dựng thuật toán cũng tƣơng đối phức tạp.
Trên khía cạnh xây dựng chuyển tiếp bóp méo ảnh cũng có 2 loại: loại cho duy nhất một ảnh kết quả và loại một chuỗi kết quả để tạo nên chuỗi hoạt hình bóp méo.
Đối với chuỗi hoạt hình việc tạo ra khung hình kết quả phải phụ thuộc vào một hệ số r[0,1]. Khi đó, với sự biến đổi của r sẽ thu đƣợc chuỗi hoạt hình kết quả.
Hình 2.2.1.1: Bóp méo ảnh toàn cục
Warp
2.2.2. Thuật toán bóp méo ảnh
2.2.2.1. Ý tưởng cơ bản của thuật toán
Trên ảnh gốc chúng ta xác định một số điểm gọi là tập các đặc trƣng của ảnh gốc. Tập các điểm đặc trƣng này đƣợc xác định bằng cách lấy mẫu từ các đƣờng biên ảnh. Xác định thêm một tập điểm đƣợc “xê dịch” từ tập các điểm đặc trƣng ảnh gốc và ta gọi chúng là tập điểm đặc trƣng của ảnh đích. Lƣu ý là có sự tƣơng ứng một - một giữa các điểm đặc trƣng của ảnh gốc và ảnh đích.
Trong ví dụ minh họa trên, tập điểm bên trái là tập các điểm đặc trƣng của ảnh gốc, tập điểm bên phải là tập đặc trƣng của ảnh đích, các điểm màu trắng là các điểm đặc trƣng tƣơng ứng trên hai ảnh có tọa độ bị “xê dịch”.
Việc xác định thêm tập các đặc trƣng của ảnh gốc và ảnh đích là để thực hiện bóp méo cục bộ. Chỉ những vùng ảnh lân cận với các điểm trắng mới bị bóp méo, những vùng ảnh khác hầu nhƣ vẫn đƣợc giữ nguyên.
2.2.2.2. Xây dựng thuật toán
Thuật toán đƣợc tiến hành theo các bƣớc sau đây:
Bước 1: Tính toán số lƣợng khung hình cần tạo ra. Khi đó ta sẽ thu đƣợc tập các hệ số r [0,1] tƣơng ứng theo công thức tuyến tính.
Bước 2: Với mỗi một giá trị r ta thực hiện các bƣớc sau:
Bước 2.1: Xác định tập điểm đặc trƣng trung gian. Tọa độ của một điểm đặc trƣng trung gian FT đƣợc tính toán dựa vào hai điểm đặc trƣng tƣơng ứng Fs và FD theo công thức sau:
xFT = xFS*(1-r) +xFD* r yFT = yFS * (1-r) + yF
D* r
Bước 2.2: Tiến hành theo phƣơng pháp tính ngƣợc đối với mỗi điểm MT(i, j) trên khung hình cần tạo ra thực hiện các bƣớc: (Với mỗi điểm FT sẽ tƣơng ứng một cặp điểm [FS, FD]).
Bước 2.2.1: Xác định ba điểm đặc trƣng trung gian FT1, FT2, FT3 thỏa mãn: tổng khoảng cách từ MT đến FT1, FT2, FT3 là nhỏ nhất và phải bé hơn một ngƣỡng.
Bước 2.2.2: Xác định tọa độ Barycentric (u, v, w) của MT theo ba điểm đặc trƣng FT1, FT2, FT3.
Bước 2.2.3: Tính toán giá tọa độ điểm ảnh MS trên ảnh gốc có cùng tọa độ Barycentric với MT so với ba điểm đặc trƣng FS1, FS2, FS3, ba điểm đặc trƣng này tƣơng ứng đôi một với FT1, FT2, FT3 của khung hình cần tạo ra. Tọa độ của MS tính theo công thức sau:
xMS = xFS1 * u + xFS2 * v + xFS3 * w yMS = yFS1 * u + yFS2 * v + yFS3 * w
Bước 2.2.4: Thiết lập giá trị mầu hoặc mức xám (đối với ảnh xám) của MS cho MT.
Thuật toán bóp méo ảnh nhằm bóp méo các vùng ảnh cục bộ bằng cách đƣa thêm một tập các điểm đặc trƣng và sử dụng tọa độ Barycentric trong việc nội suy
các điểm ảnh. Giải thuật này có khả năng tạo ra nhiều khung hình trong chuỗi hoạt hình ảnh bóp méo.
2.3. Một số kỹ thuật thƣờng dùng trong bóp méo ảnh
Với các ảnh đã đƣợc trích trọn trong từng lia, ta muốn tái sử dụng lại thì phải dùng các kỹ thuật cộng ảnh để sinh ra các ảnh trung gian trong từng lia đó. Tùy từng kỹ thuật mà chất lƣợng tái tạo ảnh cũng khác nhau.
2.3.1. Kỹ thuật xếp chồng ảnh
Là kỹ thuật căn biên và đặt chồng các ảnh lên nhau theo tỉ lệ pha màu nhất định, tỷ lệ này nằm trong khoảng [0,1], khi đƣợc thay đổi sẽ tạo ra các khung hình khác nhau biến đổi từ ảnh gốc sang ảnh đích.
Giả sử I1 và I2 là hai ảnh gốc và ảnh đích, cần tạo ra ảnh trung gian Iα : - Trong trƣờng hợp hai ảnh đồng dạng, tức là hai ảnh có cùng kích thƣớc thì:
Iα [i,j] = (1-α) I1[i,j] + α I2[i,j] với mọi (i, j) và (0 ≤ α ≤1 ) Khi α = 0 ( là ảnh gốc) , α = 1 ( là ảnh đích)
- Trong trƣờng hợp hai ảnh không đồng dạng: Iα = p, I1 + p, I2
với , :U 0,1 R thỏa mãn điều kiện :
Nhận xét:
Ưu điểm : Kỹ thuật xếp chồng ảnh đơn giản.
Nhược điểm: Chất lƣợng ảnh không tốt (ảnh trung gian chỉ là sự chồng mờ giữa ảnh đích và ảnh gốc theo một tỉ lệ trong [0,1] )
2.3.2. Kỹ thuật nắn chỉnh
Nắn chỉnh là việc dùng hàm để biến đổi từ một ảnh này thành một ảnh khác đạt đƣợc kết quả nhƣ mong muốn, hàm đƣợc dùng gọi là hàm nắn chỉnh.
Có hai cách để nắn chỉnh ảnh:
Nắn chỉnh xuôi ( Forward Mapping): Theo cách này mỗi điểm ảnh trên ảnh nguồn đƣợc biến đổi thích hợp trên ảnh đích, do đó một vài điểm trên ảnh đích có thể không có điểm tƣơng ứng trên ảnh nguồn. Cách này đƣợc sử dụng trong thuật toán point-morping.
Nắn chỉnh ngƣợc (Reverse Mapping): Cách này thì ngƣợc lại, với mỗi điểm trên ảnh đích đƣợc biến đổi thích hợp trên ảnh nguồn, cũng chính vì vậy mà tất cả các điểm ảnh trên ảnh đích tƣơng ứng với vài điểm ảnh trên ảnh nguồn. Cách thức này đƣợc sử dụng trong phƣơng pháp Beier/Neely line-morphing.
Giả sử có ảnh gốc và ảnh đích nhƣ sau :
Nếu (u,v) xác định tọa độ của ảnh nguồn, (x,y) xác định tọa độ của ảnh đích thì:
Nắn chỉnh xuôi là x = x (u,v) & y = y(u,v) Nắn chỉnh ngƣợc là u = u(x,y) & v = v(x,y)
Cách xây dựng hàm nắn chỉnh f để ảnh đạt đƣợc kết quả mong muốn thì cách thức xây dựng nhƣ sau:
Có hai ảnh gốc và ảnh đích, tập các điểm điều khiển của chúng là: (Pi,Pi’) với i=1 n Tìm hàm f: Pi f(Pi ) sao cho : = n i=1 | |f(Pi ) – Pi | |2 đạt min Giả sử f(x,y)= (a1x + b1y + c1 , a2x + b2y + c2 ) | |f(Pi ) – Pi | |2 = (a1xi + b1yi + c1 – xi’ )2 + ( a2xi + b2yi + c2 - yi’ )2 Vậy = n i=1 [ (a1xi + b1yi + c1 – xi’ )2 + ( a2xi + b2yi + c2 - yi’ )2 ] Để đạt min thì : /a1 = 0 ; /b1 = 0; /c1 = 0 /a1 = 0 n i=1 [2a1xi + 2xi(b1yi + c1 - xi’)]=0 a1*(n i=1xi ) + b1*(n i=1xi yi) + c1*(n i xi) - n i (xi’) = 0 Đặt: X0 = (n i=1xi ) , Y0 = (n i=1xi yi) , Z0 = (n i=1 xi) , W0 = n i=1 (xi’) a1*X0 + b1*Y0 + c1*Z0 = W0
Tƣơng tự, khi lấy đạo hàm theo b1 và c1 ta sẽ đƣợc hai phƣơng trình nữa. Có 3 pt và 3 ẩn (a1,b1,c1), từ đó giải ra a1 , b1, c1. Tƣơng tự tìm ra a2 , b2 , c2
Tìm ra hàm f.
Nhận xét : Đây là kỹ thuật đã phát triển từ rất sớm và mang lại nhiều kết quả
khả quan. Tuy nhiên, khi xây dựng hàm nắn chỉnh nhƣ ý muốn thƣờng khó và phức tạp, tốn nhiều thời gian. Thông thƣờng, ta hay sử dụng các điểm điều khiển cục bộ và số điểm điều khiển này là 3, khi đó ta có kỹ thuật nội suy Affine bằng hệ tọa độ Barycentric.
2.3.3. Kỹ thuật cải tiến
Ý tưởng cơ bản: Đầu tiên ta xây dựng hàm nắn chỉnh f, sau đó dùng hàm này để nắn chỉnh các ảnh thành các ảnh trung gian sau đó mới xếp chồng chúng lên nhau để tạo ra một khung hình. Áp dụng kỹ thuật cải tiến đem lại chất lƣợng khung hình trung gian tốt hơn nhiều.
Hình dƣới minh họa cho ý tƣởng này.
Có thể cho nhiều ảnh đầu vào sau khi nắn chỉnh rồi cộng lại (Hình 2.3.3.2).
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
36
Nhận xét :
- Kỹ thuật này cho chất lƣợng tái tạo ảnh cao.
- Đây là cách tiếp cận dựa trên một kỹ thuật đã rất phát triển nên sẵn có nhiều công cụ trợ giúp
- Tạo ra một cách nghĩ quen thuộc đối với những ngƣời chuyên nghiệp trong lĩnh vực đồ họa máy tính.
- Tuy nhiên vẫn dựa trên kỹ thuật nắn chỉnh nên vẫn có nhƣợc điểm của kỹ thuật nắn chỉnh: xây dựng hàm nắn chỉnh nhƣ ý muốn khó, thời gian tính toán lâu do khối lƣợng công việc lớn.
2.3.4. Kỹ thuật dựa trên các điểm tƣơng đƣơng
Ý tưởng cơ bản: Ta thiết lập giá trị của mỗi điểm trên khung hình trung gian từ hai điểm tƣơng đƣơng trên hai ảnh gốc và đích. Tức là tạo ra các điểm trung gian từ các điểm tƣơng đƣơng trên hai ảnh gốc và đích.
Nhận xét: - Kỹ thuật này cho chất lƣợng ảnh tốt
- Giảm khối lƣợng, thời gian tính toán so với kỹ thuật bóp méo. - Thông tin dùng để biến đổi ảnh có thể dùng lại.
Chƣơng 3: CHƢƠNG TRÌNH THỬ NGHIỆM
3.1. Bài toán biến đổi hình dạng ảnh 3.1.1. Giới thiệu bài toán
Trên cơ sở của những thuật toán biến đổi ảnh truyền thống, đó là: thuật toán bóp méo ảnh, thuật toán xếp chồng ảnh, phép biến đổi ảnh Morphing và phép nội suy tam giác Barycentric. Em đã áp dụng và tổng hợp những thuật toán đó để dần hình thành thuật toán biến đổi hình dạng ảnh, mà mục đích là xây dựng đƣợc hệ thống nội suy ảnh khi biết hai ảnh đầu vào, ta có thể lấy ra đƣợc các ảnh trung gian ở các giai đoạn khác nhau theo mong muốn.
Ví dụ: Ta đƣa vào hai ảnh của cùng một ngƣời. Ảnh lúc 5 tuổi làm ảnh gốc, ảnh lúc 50 tuổi làm ảnh đích. Cần đƣa ra dãy các ảnh trung gian tạo nên từ sự biến đổi giữa ảnh nguồn và ảnh đích theo yêu cầu, ví dụ ảnh lúc 20 tuổi, 30 tuổi,…
Thuật toán biến đổi ảnh đƣợc xây dựng theo phƣơng pháp tác động toàn cục, mọi điểm ảnh đều có tiêu chí biến đổi theo cùng một thuật toán.
Trên ảnh gốc và ảnh đích( là hai ảnh ở đầu vào), ta xác định một tập các điểm gọi là tập các điểm đặc trƣng trên ảnh gốc và ảnh đích. Lƣu ý, có sự tƣơng ứng một-một giữa các điểm đặc trƣng trên ảnh gốc và ảnh đích.
Ở thuật toán này những vùng ảnh lân cận với những điểm đặc trƣng (hình chữ nhật màu trắng) sẽ bị bóp méo. Những vùng không chứa những điểm trắng sẽ bị loại bỏ. Mục đích của thuật toán là chỉ biến đổi để lấy ra khuôn mặt trung gian theo hai ảnh gốc và đích.
Đầu vào của hệ thống này là hai ảnh gốc và đích, có thể là ảnh màu hoặc ảnh đa cấp xám. Trong ứng dụng ShapeWrap mà em xây dựng dƣới đây, các ảnh đầu vào là các ảnh trong hệ màu RGB. Ứng dụng ShapeWrap có thể đọc đƣợc hầu hết các định dạng ảnh thông dụng nhƣ: bmp, jpg, tif,…
3.1.2. Xây dựng thuật toán.
Thuật toán đƣợc xây dựng theo các bƣớc:
Bước 1: Xác định hệ số bóp méo r[0, 1] theo hai cách:
Cách 1: Xác định tuổi trên hai ảnh gốc và đích, lựa chọn tuổi ảnh trung gian cần tạo ra. Từ các hệ số về độ tuổi đó, ta xác định đƣợc hệ số r[0, 1] theo công thức sau:
Đặt m_t là tuổi ảnh trung gian cần tạo ra. m_t1 là tuổi ảnh gốc. m_t2 là tuổi ảnh đích. Thì r= 1 _ 2 _ 1 _ _ t m t m t m t m
Cách 2: Tùy chọn một hệ số r[0, 1], để tiến hành biến đổi ảnh.
Bước 2: Với mỗi giá trị của r ta thực hiện theo các bƣớc sau:
Bước 2.1: Xác định tập điểm đặc trƣng trung gian. Gọi : FS là tập các điểm đặc trƣng trên ảnh gốc.
FD là tập các điểm đặc trƣng trên ảnh đích. FT là tập điểm đặc trƣng trên ảnh trung gian.
Tọa độ của một điểm đặc trƣng trung gian FT đƣợc tính toán dựa vào hai điểm đặc trƣng tƣơng ứng Fs và FD theo công thức sau:
xFT = xFS*(1- r) +xF D* r yF T = yF S * (1- r) + yF D* r
Bước 2.2: Tiến hành theo phƣơng pháp tính ngƣợc đối với mỗi điểm MT(i, j) trên khung hình cần tạo ra thực hiện các bƣớc: ( Lƣu ý: Với mỗi điểm FT sẽ tƣơng ứng một cặp điểm [FS, FD]).
Bước 2.2.1: Xác định ba điểm đặc trƣng trung gian FT1, FT2, FT3 thỏa mãn: Tổng khoảng cách từ MT đến FT1, FT2, FT3 là nhỏ nhất và phải bé hơn một ngƣỡng.
Bước 2.2.2: Xác định tọa độ Barycentric (u, v, w) của MT theo ba điểm đặc trƣng FT1, FT2, FT3.
Bước 2.2.3: Tính toán giá tọa độ điểm ảnh MS trên ảnh gốc và MD trên ảnh đích có cùng tọa độ Barycentric với MT so với ba điểm đặc trƣng FS1, FS2, FS3 và FD1, FD2, FD3. Các điểm đặc trƣng này tƣơng ứng từng đôi một với FT1, FT2, FT3 của khung hình trung gian cần tạo ra. Tọa độ của MS và MD đƣợc tính theo công thức sau: Tọa độ của MS: xMS = xFS1 * u + xFS2 * v + xFS3 * w yMS = yFS1 * u + yFS2 * v + yFS3 * w Tọa độ của MD: xM D =xF D1 * u + xF D2 * v + xF D3 * w yM D = yF D1 * u + xF D2 * v + xF D3 * w
Bước 2.2.4: Thiết lập giá trị màu cho ảnh trung gian.
Tính tọa độ màu cho hai điểm ảnh MS trên ảnh gốc và MD trên ảnh đích. Thiết lập màu cho điểm ảnh MT trên ảnh trung gian cần tạo theo công thức.