5.24. Biến đổi tọa độ cực

Tọa độ cực xác định vị trí mỗi điểm ảnh bằng một góc tính từ hướng tham chiếu và một khoảng cách tính từ tâm đã chọn, thay cho các độ lệch ngang và dọc từ góc trên bên trái. Hệ tọa độ này có giá trị nhờ một đặc tính quan trọng: phép quay quanh tâm đã chọn trở thành phép tịnh tiến dọc theo trục góc, cho phép một thuật toán bất biến xoay tìm kiếm trong không gian tham số đơn giản hơn nhiều so với xử lý phép quay trực tiếp. linpolar()logpolar() thực hiện phép chiếu lại này.

5.24.1. Hai phương thức

linpolar() thực hiện phép chiếu lại từ Cartesian sang tọa độ cực với trục khoảng cách tuyến tính. Mỗi cột đầu ra tương ứng với một góc cố định quanh tâm; mỗi hàng đầu ra tương ứng với một khoảng cách cố định từ tâm.

img.linpolar()

logpolar() thực hiện cùng phép chiếu lại nhưng với trục khoảng cách logarit. Cách xử lý góc là giống nhau; điểm khác biệt là khoảng cách tăng theo cấp số nhân theo các hàng của đầu ra thay vì tuyến tính. Sự khác biệt này có ý nghĩa quan trọng vì đặc tính hình học thứ hai mà tọa độ cực thể hiện: co giãn nguồn quanh tâm đã chọn trở thành phép tịnh tiến dọc theo trục khoảng cách -- nhưng chỉ khi trục đó là logarit. Với trục khoảng cách tuyến tính, việc co giãn làm kéo dài ảnh cực; với trục khoảng cách log, việc co giãn dịch chuyển ảnh một lượng cố định.

img.logpolar()

Cả hai phương thức đều nhận các từ khóa x=y= để đặt tâm của phép chiếu lại tọa độ cực theo tọa độ điểm ảnh nguồn, mặc định là nửa chiều rộng và nửa chiều cao của ảnh. Việc chọn tâm rất quan trọng: một phép biến đổi tọa độ cực quanh điểm sai sẽ xáo trộn nội dung theo cách phá vỡ đặc tính quay/tịnh tiến.

Three panels in a row. The leftmost is a Cartesian source image showing a clock face -- two concentric circles with twelve tick marks around the outer rim at multiples of 30 degrees, and a single hand pointing in one direction. The middle panel shows the linpolar re-projection of that source: a rectangular output image where the twelve tick marks appear as evenly spaced vertical strokes along the top row, the two concentric circles appear as two horizontal lines at different vertical positions, and the clock hand appears as a single vertical line at the position corresponding to its angle in the source. The rightmost panel shows the logpolar re-projection: the same angular distribution along the horizontal axis, but with the gap between the inner and outer circles compressed because the distance axis is logarithmic.

Mặt đồng hồ được chiếu lại bởi linpolar()logpolar(). Các vòng tròn đồng tâm trong nguồn trở thành các đường ngang trong đầu ra; các vạch chia góc trở thành các đường dọc cách đều nhau dọc theo trục góc. Biến thể log-polar nén khoảng cách hướng tâm.

5.24.2. Khi nào nên dùng cái nào

Sự lựa chọn giữa linpolar()logpolar() chính là lựa chọn loại bất biến mà ứng dụng cần. Nếu chỉ cần bất biến xoay -- phát hiện rằng cùng một cảnh xuất hiện trong hai khung hình, khung thứ hai bị xoay một góc không biết -- linpolar() là đủ: phép quay trở thành dịch chuyển ngang trong ảnh cực, và một bộ so khớp chỉ dịch chuyển như find_displacement() xác định góc bằng độ lớn của dịch chuyển. Khi bất biến tỷ lệ cũng quan trọng -- khung thứ hai vừa bị xoay vừa bị zoom -- logpolar() thu gọn cả hai ẩn số thành các phép tịnh tiến: ngang cho xoay, dọc cho tỷ lệ.

Đó là công thức chuẩn cho một bộ theo dõi bền vững trước các thay đổi xoay và tỷ lệ: chiếu lại khung tham chiếu và từng khung trực tiếp sang log-polar quanh cùng một tâm, chạy find_displacement() trên cặp đó, và đọc các trường rotationscale từ kết quả.

5.24.3. Mở rộng các đặc trưng tròn

Một ứng dụng khác của biến đổi tọa độ cực là mở rộng các đặc trưng tự nhiên có dạng tròn trong ảnh. Mặt đồng hồ, mặt số đồng hồ đo, mục tiêu kiểm tra có dạng tròn theo thiết kế -- tất cả đều trở thành tuyến tính trong phép chiếu cực, đây là dạng mà hầu hết các thuật toán dễ xử lý hơn.

Hình trên minh họa trực tiếp điều này: mười hai vạch chia trên mặt đồng hồ, cách đều nhau quanh chu vi trong Cartesian, trở thành mười hai đường dọc cách đều nhau trong ảnh cực. Một hình chữ nhật quanh bất kỳ vạch nào trong ảnh cực xác định vị trí của vạch đó bất kể mặt đồng hồ bị xoay thế nào khi chụp. Một bộ so khớp mẫu chạy qua ảnh cực tìm tất cả các vạch trong một lần.

5.24.4. Phép ánh xạ ngược

reverse=True chạy nghịch đảo của phép chiếu cực thuận: cho một ảnh cực, tạo ra ảnh Cartesian có phép chiếu cực là ảnh đó. Ứng dụng gọi dạng thuận để chạy thuật toán trong tọa độ cực, sau đó gọi dạng ngược để chiếu kết quả trở lại Cartesian cho bất kỳ giai đoạn tiếp theo nào cần thấy nó.

Ứng dụng phổ biến nhất là chỉnh sửa một ảnh cực rồi chiếu ngược lại: một bộ lọc áp dụng cho ảnh cực -- làm mờ ngang mà theo thuật ngữ cực sẽ làm mờ theo góc nhưng bảo toàn cấu trúc hướng tâm -- tạo ra kết quả Cartesian đã được làm mờ theo góc, điều mà bộ lọc Cartesian không thể thực hiện trực tiếp.