Đề tài hướng tới việc ứng dụng công nghệ xử lý ảnh mới cho robot cứu hộ, cứu nạn, tạo tiền đề cho việc xây dựng một robot cứu hộ Hough transform and kinect camera

27 19 0
Đề tài hướng tới việc ứng dụng công nghệ xử lý ảnh mới cho robot cứu hộ, cứu nạn, tạo tiền đề cho việc xây dựng một robot cứu hộ Hough transform and kinect camera

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Lời mở đầu Theo dự đoán tương lai, robot tâm điểm cách mạng lớn sau Internet Con người có nhu cầu sở hữu robot nhu cầu PC Với xu hướng này, ứng dụng truyền thống khác robot công nghiệp, y tế, giáo dục đào tạo, giải trí đặc biệt an ninh quốc phịng thị trường robot vơ to lớn Đề tài hướng tới việc ứng dụng công nghệ xử lý ảnh cho robot cứu hộ, cứu nạn, tạo tiền đề cho việc xây dựng robot cứu hộ, cứu nạn hồn chỉnh, trợ thủ đắc lực công tác cứu hô, cứu nạn xảy thảm họa thiên nhiên vụ tai nạn Trong khn khổ đề tài, nhóm có bước đầu xây dựng nên ứng dụng cho robot với khả phát môi trường xung quanh robot, nhằm giúp robot có khả tìm đường đến đích tránh chướng ngại vật đường di chuyển đến mục tiêu Một điểm nhấn mạnh khối thị giác máy tính cho robot, với hỗ trợ thiết bị chơi game Kinect có khả khơi phục mặt phẳng phía trước robot dạng 3D, đáp ứng xác cần thiết đưa robot vào vận hành Để hoàn thành đề tài này, chúng em nhận hướng dẫn tận tình thầy PGS.TS Nguyễn Tiến Dũng, từ quy trình việc lựa chọn đề tài phù hợp, dõi theo nhắc nhở chúng em Đồng thời, chúng em nhận hướng dẫn chu đáo nhiệt tình thầy Đặng Khánh Hịa việc hình thành ý tưởng, q trình triển khai cơng việc, đưa phương án giải lỗi vấn đề gặp phải Chúng em xin chân thành cảm ơn thầy! Mục Lục Lời mở đầu Mục Lục Chương 1: Giới thiệu tổng quan Khái quát xử lý ảnh 1.1 Xử lý ảnh ? 1.2 Một số khái niệm sở xử lý ảnh Point cloud library (PCL) 2.1 Các module: 2.2 Cấu trúc liệu PCL Thiết bị Camera Kinect 12 3.1 Giới thiệu chung 12 3.2 Những thành phần Kinect 12 3.3 Thư viện hỗ trợ Kinect 13 Chương 2: Trích chọn mặt phẳng…………………………………………………… ….15 Ảnh độ sâu từ Kinect 15 1.1 Nguyên lý cảm biến độ sâu 15 1.2 Các liệu đo từ cảm biến 15 1.3 Nhận hiển thị liệu từ cảm biến 16 1.3.1 ColorStream 16 1.3.2 Depth Stream 17 Ánh xạ thông tin nhận sang đám mây điểm 19 Chương 3: Biến đổi Hough Transform Ransac 20 3.1 Tổng quan biến đổi Hough 20 3.2 Biến đổi Hough tìm đường thẳng 21 3.3 Ransac 25 Kết luận hướng phát triển 27 Chương 1: Giới thiệu tổng quan Một yêu cầu robot khả định hướng tốt phạm vi mơi trường chưa xác định hình dung đồ định hướng Bằng cách sử dụng quan sát thích hợp từ mơi trường, kết hợp với đồ độ sâu lúc để định hướng cho robot yêu cầu cần nghiên cứu Vì chúng em định nghiên cứu phát triển thuật toán phát mặt phẳng vật cản từ đồ độ sâu Đó hai yếu tố (cùng với định hướng) giúp robot hoạt động mơi trường thực tế Mục tiêu nghiên cứu: Xây dựng đồ độ sâu, từ tính tốn để phát mặt phảng ảnh Mỗi mặt phẳng đánh dấu màu sắc khác Phân loại mặt phẳng: mặt phẳng đất, mặt phẳng đứng Ngoài cịn phải xác định vị trí hình dạng vật cản có mơi trường di chuyển robot hay mặt phẳng mà ta nhận diện Khái quát xử lý ảnh 1.1 Xử lý ảnh ? Con người thu nhận thơng tin qua giác quan thị giác đóngvai trị quan trọng 80% thơng tin thu nhận mắt tức dạng ảnh Mặt khác với phát triển mạnh mẽ phần cứng máy tính, xử lý ảnh, đồ hoạ ngày có nhiều ứng dụng thực tiễn phục vụ sống Như vậy, xử lý ảnh đóng vai trị quan trọng tương tác người máy Cũng xử lý liệu đồ hoạ, xử lý ảnh số lĩnh vực tin học ứng dụng Xử lý liệu đồ hoạ đề cập đến ảnh nhân tạo,các ảnh đựợc xem xét cấu trúc liệu tạo chương trình Xử lý ảnh số bao gồm phương pháp kĩ thuật để biến đổi, để truyền tải mã hoá ảnh tự nhiên 1.2 Một số khái niệm sở xử lý ảnh Để xử lý máy tính điện tử ảnh cần phải số hóa Đó q trình biến đổi ảnh từ tín hiệu liên tục sang tín hiệu rời rạc thơng qua việc lấy mẫu lượng tử hóa Trong q trình người ta sử dụng khái niệm “pixel” Mỗi pixel đặc trưng cặp tọa độ (X ,Y) màu sắc nó.[4] • Ảnh: Là tập hợp pixel có cấu trúc, ta coi ảnh mảng hai chiều (n, p) I có n dịng p cột, ảnh có n × p (pixel) Ta ký hiệu (X ,Y ) I để điểm ảnh có toạ độ (X ,Y) • Điểm ảnh: Gốc ảnh ảnh liên tục không gian độ sáng Để xử lý máy tính, ảnh cần phải số hoá Số hoá ảnh biến đổi gần ảnh liên tục thành tập điểm phù hợp với ảnh thật vị trí (khơng gian) độ sáng (mức xám) Khoảng cách điểm ảnh thiết lập cho mắt người khơng phân biệt ranh giới chúng Mỗi điểm gọi điểm ảnh (PEL: Picture Element ) hay gọi tắt Pixel Trong khuôn khổ ảnh hai chiều, pixel ứng với cặp tọa độ (x,y) Điểm ảnh (Pixel) phần tử ảnh số toạ độ (x, y) với độ xám màu định Kích thước khoảng cách điểm ảnh chọn thích hợp cho mắt người cảm nhận liên tục không gian mức xám (hoặc màu) ảnh số gần ảnh thật Mỗi phần tử ma trận gọi phần tử ảnh • Mức xám (Gray level): Đó kết việc mã hóa, cho tương ứng cường độ sáng điểm ảnh với giá trị số, 16, 32, 64 mức • Biểu diễn ảnh: Trong biểu diễn ảnh người ta thường sử dụng phần tử đặc trưng ảnh pixel Một hàm hai biến chứa thông tin biểu diễn ảnh Một số mơ hình thường dùng để biểu diễn ảnh mơ hình tốn (biểu diễn ảnh nhờ hàm sở), mơ hình thống kê (ảnh coi phần tử tập hợp đặc trưng kỳ vọng toán, hiệp biến, phương sai, moment…).[2] • tăng cường ảnh: Đây bước quan trọng bao gồm kỹ thuật lọc độ tương phản, khử nhiễu, màu… • Biến đổi ảnh: Thao tác chủ yếu tập ma trận sử dụng kỹ thuật để biến đổi ảnh qua ma trận: Biến đổi Furie, Sin, Cosin, tích Kronecker • Phân tích ảnh: Liên quan tới việc xác định độ đo định lượng ảnh để đưa mơ tả đầy đủ ảnh Có kỹ thuật để hỗ trợ phân tích ảnh: Dị biên, lọc vi phân, dò theo quy hoạch động, phân vùng ảnh [2] • Nhận dạng ảnh: Q trình liên quan đến mô tả đối tượng mà người ta muốn đặc tả Nhận dạng ảnh thường sau q trình trích chọn đặc trưng chủ yếu đối tượng 2.Point cloud library (PCL) PCL thư viện hỗ trợ xử lý ảnh 3D, xây dựng với nhiều module thực thuật toán như: Lọc (filtering), Khôi phục bề mặt (Surface reconstruction), phân vùng (segmentation), Ước lượng đặc tính vật (Feature estimation ) Thư viện kèm để hỗ trợ chia nhỏ biên dịch độc lập Các thư viện gồm có : • Eigen: Hỗ trợ phép tốn tuyến tính, dùng vào hầu hết tính tốn tốn học PCL • FLANN: (Fast Library for Approximate Nearest Neighbors) Tìm kiếm nhanh điểm lân cận khơng gian 3D • Boost: Giúp chia sẻ trỏ tất module thuật toán PCL để tránh chép trùng liệu lấy hệ thống • VTK: (Visualization Toolkit) Hỗ trợ nhiều platform việc thu liệu 3D, hỗ trợ hiển thị, ước lượng thể tích vật thể • CminPack : Thư viện mở giúp giải phép toán tuyến tính khơng tuyến tính 2.1 Các module: Thư viện có tất 14 module bao gồm: 2.1.1 PCL_Common: Chứa cấu trúc liệu phương thức sử dụng phần lớn thư viện PCL Cấu trúc liệu cốt lõi class pointClound, loại liệu biểu diễn điểm, bề mặt, giá trị mầu, mơ tả tính năng… VD: PCL::PointXYZ; PCL::PointXY; PCL::PointXYZRGB; 2.1.2 Module Features: Chứa cấu trúc liệu chế tính tốn, ước lượng 3D từ liệu điểm PCD 3D Features biểu diễn xác điểm 3D vị trí khơng gian để mơ tả phần hình khối dựa vào thơng tin có xung quanh điểm Vùng liệu chọn lân cận điểm truy vấn thường gọi K-neighborhood 2.1.3 Module Filters: PCL_filters Chứa kỹ thuật loại bỏ nhiễu 2.1.4 Module Geometry: Chứa tất cấu trúc liệu giải thuật để tính tốn hình học 2.1.5 Module IO: PCL_IO: Chứa hàm lớp để đọc ghi liệu dạng PCD, thu thập liệu từ nhiều nguồn khác (Trong đồ án dùng Kinect) 2.1.6 PCL_Kdtree: Thư viện cung cấp cấu trúc liệu Kd_tree, sử dụng FLANN giúp nhanh chóng tìm kiếm vùng gần (nearest neighbors searches) Kd-tree cấu trúc liệu phân để vùng không gian lưu trữ tập K-dimention điểm dạng dễ dàng phân loại tìm kiếm Có thể sử dụng để tìm tương ứng nhóm điểm, đặc tả tính năng, định nghĩa vùng lân cận xung quanh điểm điểm 2.1.7: PCL_Keypoint: Là thư viện chứa thực thi thuật toán nhận dạng “Point clound keypoint” Key Point (hay interest point) điểm ảnh point cloud mà có tính chất ổn định, riêng biệt dễ dàng phát Thông thường số lượng Key Point nhỏ tổng số điểm cloud 2.1.8 PCL_Octree: Chứa thuật toán hiệu để tạo nên cấu trúc liệu phân cấp từ liệu point cloud Nó cho phép phân vùng không gian, downsampling (giảm số lượng mẫu tăng tốc độ tính tốn) thực phép tốn tìm kiếm tập liệu PointCloud Mỗi nút Octree có nút khơng có nút Nút gốc (mầu đỏ hình )được biểu diễn hình lập phương bao tồn điểm Tại cấp cây, không quan chia thành tăng độ phân giải cho điểm ảnh không gian chiều Thư viện cung cấp chương trình tìm kiếm lân cận hiệu 2.1.9 Module registrantion (PCL_registration): Kết hợp liệu vào mơ hình chung, thống thường thực kỹ thuật gọi registration Ý tưởng xác định điểm tương ứng liệu tìm chuyển đổi khoảng cách tối thiểu điểm tương ứng 2.1.10 Module PCL_sample_consensus: Thư viện pcl_sample_consensus có khả tách nhóm điểm có tính chất (Sample Consensus hay SAC) giống thuật tốn RANSAC (Tìm kiếm đường thẳng tập hợp điểm) Các nhóm điểm mặt phẳng, mặt cầu, trụ Thư viện thích hợp ứng dụng dị tìm đối tượng tường, cửa, vật bàn… 2.1.11 PCL_Search: Cung cấp phương pháp tìm kiếm lân cận (nearest neighbors) cách sử dụng cấu trúc liệu khác nhau, bao gồm: Kd_tree (từ thư viện PCL_Kdtree) Octrees (từ thư viện PCL_Octrees) Brute foce (Thuật tốn) Các tìm kiếm đặc biệt cho liệu có tổ chức 2.1.12 PCL_Segmentation: Chứa thuật toán để phân chia Point Cloud thành nhóm riêng biệt Các thuật tốn thích hợp xử lý point Cloud bao gồm vùng không gian bị cô lập Trong trường hợp vậy, clustering thường chia nhỏ để sau xử lý độc lập 2.1.13 PCL_surface: Là thư viện thích hợp cho việc xây dựng lại bề mặt từ liệu quét 3D Các đối tượng gồm vỏ, bề mặt lưới, bề mặt nhẵn hay bình thường Khi có nhiễu làm mịn lấy mẫu lại Chia lưới ( meshing ) cách tổng quát để tạo bề mặt điểm Hiện có thuật tốn a very fast triagulation of the original points aslower meshing that does smoothing and hold filling as well Có thể dùng thư viện để tạo thân lồi lõm thích hợp cho đại diện bề mặt đơn giản hóa hoặ ranh giới 2.1.14: PCL_visualization: Thư viện tạo nhanh chóng hiển thị kết thuật toán liệu 3D Thư viện cung cấp: - Các phương pháp dựng hình thiết lập thuộc tính ảnh, mầu sắc, kích thước cho liệu có kiểu “PCL::PointCloud” - Vẽ hình 3D từ điểm phương trình tham số - Vẽ biểu đồ 2.2 Cấu trúc liệu PCL 2.2.1 PointCloud: Kiểu liệu PCL PointCloud Một PointCloud lớp C++ bao gồm: • Width (int): Xác định chiều dài tập liệu số lượng điểm “Width” có nghĩa o Có thể xác định tổng số điểm cloud (bằng số lượng phần tử cloud) cho liệu có tổ chức o Có thể xác định chiều rộng (tổng số điểm liên tiếp) tập liệu có tổ chức Chú ý: Tập liệu điểm có tổ chức tập liệu chia thành hàng cột giống ma trận Vd: cloud.width=640;// Tao 640 diem tren mot dong • Height (int): Tương tự width cột ma trận điểm Nếu hieght=1 liệu khơng tổ chức (có thể dùng tính chất để kiểm tra tập liệu có tổ chức hay không) Vd: cloud.width = 640; // Khai bao mot anh co cau truc, gom 640 dong va 480 cot cloud.height = 480; // tong so diem anh la 640*480=307200 • Points (std::vector) Chứa mảng liệu lưu trữ tất điểm có kiểu pointT Kiểu PointT pcl::PointXYZ, pcl::PointXYZRGB, pcl::PointXYZRGBA… Ví dụ: pcl::PointCloud cloud; std::vector data = cloud.points; • Is_dense(bool) Trả giá trị logic, tất giá trị points hữu hạn => True ngược lại False Ngoài lớp pointCloud chứa thành phần chứa tùy chọn sensor Sensor_origin, sensor_orientation Các thành phần thường dùng thuật tốn PCL 2.2.2 Định dạng PCD: Định dạng PCD định dạng dùng để lưu trữ liệu 3d pointCloud Định dạng gồm phần header phần liệu Mỗi file có phần header xác định tính chất, thuộc tính liệu mà lưu trữ Header PCD mã hóa mã ASCII Trong header gồm có o VERSION: xác định phiên định dạng PCD  FIELDS: Xác định tên chiều trường điểm: Vd: FIELDS x y z # XYZ data FIELDS x y z rgb # XYZ + colors FIELDS x y z normal_x normal_y normal_z # XYZ + surface normals FIELDS j1 j2 j3 # moment invariants 10  SIZE: Xác định kích thước chiều tính theo byte Vd: Unsigned char/char ứng với 1byte Unsigned short/short ứng với 2byte Unsigned int/int ứng với byte Double ứng với 8byte  TYPE: Quy định kiểu chiều, quy ước ký tự I - Biểu diễn kiểu số nguyên có dấu (int8, int16,int32) U – Biểu diễn kiểu số nguyên không dấu F- Biểu diễn kiểu số thực  WIDTH : Xác định chiều rộng tập liệu tính theo điểm  HEIGHT: Tương tự WIDTH tính cho chiều dài Nếu giá trị liệu chưa tổ chức  POINT: chứa giá trị tổng số điểm ảnh Phần DATA chứa liệu điểm, điểm mã hóa theo bin hay ASCII Ví dụ file PCD có dạng sau: # PCD v.7 – Point Cloud Data file format VERSION FIELDS x y z rgb # Chứa tọa độ mầu dạng RGB SIZE 4 4 # Mỗi thành phần tọa đọ xyz mầu lưu 4byte TYPE F F F F # Kiểu liệu thành phần số thực COUNT 1 1 WIDTH # Độ rộng liệu HEIGHT # Dữ liệu không tổ chức VIEWPOINT 0 0 POINTS # Tổng số điểm ảnh DATA ascii # Dữ liệu mã hóa mã ascii 0.93773 0.33763 4.2108e+06 # Các giá trị tọa độ mầu điểm 0.90805 0.35641 4.2108e+06 0.81915 0.32 4.2108e+06 0.97192 0.278 4.2108e+06 11 (gesture) SDK gồm tính âm giảm tiếng ồn hạn chế tiếng vang Các nhà phát triển truy cập vào cơng nghệ hình thành tia để nhận diện nguồn âm hay truy cập vào giao diện trình ứng dụng (API) để nhận diện giọng nói hệ thống Windows 14 Chương 2: Trích chọn mặt phẳng 1.Ảnh độ sâu từ Kinect 1.1 Nguyên lý cảm biến độ sâu Hình 1.1: Bên Kinect: RGB, IR camera IR projector Cặp cảm biến IR camera IR projector phối hợp với để tạo giá trị độ sâu công nghệ Light Coding PrimeSense Projector chiếu chùm sáng hồng ngoại, tạo nên đốm sáng khơng gian phía trước Kinect, tập hợp đốm sáng phát cố định Những đốm sáng tạo nhờ nguồn sáng truyền qua lưới nhiễu xạ (diffraction gratings) Tập hợp đốm sáng IR camera chụp lại, thơng qua giải thuật đặc biệt tích hợp PS1080 SoC cho đồ độ sâu Bản chất giải thuật phép toán hình học dựa quan hệ hai cảm biến IR camera Projector 1.2 Các liệu đo từ cảm biến Các cảm biến Kinect điều khiển đồng thời thu thập xử lý liệu thơng qua chip PS1080 có tần số 12MHz, sau lưu trữ vào nhớ Flash Các liệu truyền vào máy tính thơng qua cổng USB 2.0 15 Các tín hiệu thu thập bao gồm liệu độ sâu, màu sắc âm tín hiệu độ sâu liệu quan trọng có nhiều dụng Sở dĩ liệu chiều độ sâu có tầm quan trọng giúp việc nhận dạng vật thể đơn giản nhiều so với xử lý ảnh thông thường Các thuật tốn xử lý ảnh thơng thường dựa vào tương đồng mầu sắc, nhiên, vật có mầu sắc tương tự khơng vật thể phần đối tượng có mầu khác nhau,do gây khó khăn q trình nhận dạng Trong đó, với thơng tin độ sâu, vật thể phân biệt với thơng qua vị trí Những điểm có khoảng cách gần có xu hướng đối tượng mà không phân biệt mầu sắc Chỉ độ sâu giảm đột ngột cạnh số phần nhỏ đối tượng đó, hình ảnh đồ độ sâu có thay đổi Một ưu điểm đồ độ sau liệu nén cao so với ảnh mầu thơng thường thích hợp việc truyền dẫn nhanh tín hiệu Các thuật tốn nhận dạng ảnh độ sâu đơn giản chí tái tạo lại vật thể 3D Từ phân tích ta thấy ưu điểm đồ độ sâu thích hợp để ứng dụng đề tài robot tự hành 1.3 Nhận hiển thị liệu từ cảm biến Dữ liệu gửi dạng data stream NUI API cho phép lập trình kiểm soát truy nhập liệu Các bước làm bao gồm:  Xác định dòng liệu cần thiết  Cho phép mở dòng liệu (Enable Data Streaming)  Tạo đệm để lưu trữ liệu sensor  Giải phóng đệm để sử dụng khung hình 1.3.1 ColorStream ColorStream có nhiều độ phân giải định dạng tùy thuộc vào lựa chọn colorStream RGB, YUV hay Bayer SDK cung cấp số tùy chọn cho phép tối ưu hóa camera ứng với tác động môi trường như: Tăng giảm độ sáng Thay đổi màu sắc, độ tương phản Tất hỗ trợ class ColorCameraSetting Để hiển thị thành phần liệu mầu sắc C# cần tiến hành công việc sau: Khởi tạo cảm biến để tạo liệu màu Tạo kiện thông báo liệu sẵn sàng Xử lý kiện hiển thị lên Forms a Tạo kiện báo liệu sẵn sàng: if (this.sensor != null) 16 { this.sensor.ColorFrameReady += this.SensorColorFrameReady; } b Xử lý kiện hiển thị lên Forms Ví dụ bên thực với windows Forms với hỗ trợ công cụ Coding4Fun.Kinect.Toolkit private void SensorColorFrameReady(object sender, ColorImageFrameReadyEventArgs e) { using (ColorImageFrame colorFrame = e.OpenColorImageFrame()) { if (colorFrame != null) { colorImage.Image = colorFrame.ToBitmap(); } } } 1.3.2 Depth Stream Mỗi khung hình liệu Depth Stream tạo thành từ pixels chứa khoảng cách (bằng mm) từ mặt phẳng camera đến đối tượng Các ứng dụng sử dụng depth data để bám theo chuyển động nhận dạng đối tượng Dữ liệu khoảng cách tính mm số (x,y) chứa tọa độ field of view sensor Có tùy chọn độ phân giải 640x480 (mặc định), 320x240 vào 80x60 Tất quy định DepthImageFormat Enumeration Việc hiển thị liệu cho DepthStream hoàn toàn tương tự ColorStream if (this.sensor != null) { 17 this.sensor.DepthFrameReady += this.SensorDepthFrameReady; } private void SensorDepthFrameReady (object sender, ColorImageFrameReadyEventArgs e) { using (DepthImageFrame DepthFrame = e.OpenColorImageFrame()) { if (DepthFrame != null) { DepthImage.Image = DepthFrame.ToBitmap(); } } } 18 Ánh xạ thông tin nhận sang đám mây điểm 2.1Tổng quan Các thơng tin thu từ kineck cịn rời rạc, cần chuẩn hóa để sử dụng 2.2 Các thơng số Camera Ma trận intrinsic, ma trận xoay, tịnh tiến, hệ trục tọa độ camera 2.3Kĩ thuật chuyển ảnh RGB ảnh độ sâu sang đám mây điểm Phép chiếu không gian Xử lý vấn đề chuyển đổi hệ trục để tính tốn Opencv Tính thông tin ma trận intrinsic (fx, fy, cx, cy) dùng hàm estimateCalibratrion, +tính đơn vị giới thực, tương ứng với pixel +real world (0, 0, -1) > điểm chiếu image > điểm (cx, cy) +real world (1, 1, -1) > điểm nằm biên ảnh > lấy chênh lệch với điểm (fx, fy) +điểu chỉnh đối số tham số mặc định (ko biết vào đâu) Áp dụng công thức sau: +từ 3d sang 2d: point2d = intrinsics * rt * point3d +từ 2d sang 3d: point3d = reverse(intrinsics * rt) * point2d +thực tế code cơng thức phức tạp hơn: intrinsics * rt tương đương intrinsics * projection * to_opencv * camera_transform; đó: projection = I; to_opencv: ma trận giúp thay đổi hệ trục dùng opencv; camera_transform: ma trận rt 19 Chương 3: Biến đổi Hough Transform Ransac 3.1 Tổng quan biến đổi Hough Biến đổi Hough (HT) (Hough, 1962) kỹ thuật mà nằm hình dạng hình ảnh Đặc biệt, HT sử dụng để trích chọn đường thẳng, hình trịn hình elip (hoặc cắt hình nón) Trong trường hợp đường thẳng, xác định tốn học tương đương với biến đổi Radon (Deans, 1981) HT giới thiệu Hough (Hough, 1962) sau sử dụng để tìm đường bong bóng khơng phải hình dạng hình ảnh Tuy nhiên, Rosenfeld ghi nhận lợi tiềm HT thuật toán xử lý hình ảnh ( Rosenfeld, 1969) HT thực để tìm đường thẳng hình ảnh (Duda, 1972) mở rộng nhiều, HT có nhiều lợi nhiều tuyến đường tiềm để cải thiện Ưu điểm HT cung cấp kết tương tự đối sánh mẫu nhanh ( Princen, 1992), (Sklansky, 1978), (Stockman, 1977) Điều đạt tái định dạng lại trình đối sánh mẫu, dựa phương pháp tiếp cận thu thập dấu hiệu bình chọn mảng tích lũy Việc thực HT xác định ánh xạ từ điểm ảnh vào không gian tích lũy (khơng gian Hough) Ánh xạ thực cách tính tốn hiệu dựa hàm mơ tả hình dạng mục tiêu Ánh xạ địi hỏi tài ngun nhiều so với đối sánh mẫu Tuy nhiên, địi hỏi lưu trữ quan trọng u cầu tính tốn cao Những vấn đề giải sau, kể từ họ cung cấp tập trung cho phát triển liên tục HT Tuy nhiên, thực tế HT tương đương với đối sánh mẫu đưa đủ động lực cho kỹ thuật số phổ biến tất kỹ thuật trích chọn hình dạng có 20 3.2.Biến đổi Hough tìm đường thẳng Trên hệ toạ độ Đề đường thẳng có hình dạng hình… Mỗi điểm có toạ độ (xi, yi) trục toạ độ Nếu dùng tham số ρ (độ dài đường vng góc từ gốc toạ độ đến đường thẳng) θ (góc đường vng góc với trục x) để biểu diễn đường thẳng biểu diễn đường thẳng qua thơng gian tham số Chúng ta có quan hệ ρ = x*cos(θ)+y*sin(θ) Các giá trị ρ θ có giới hạn θ giới hạn [0,360] [0, 2π] radian ρ giới hạn [−D,D] D đường chéo ảnh Như đường biến đổi thành điểm khơng gian tham số với thông số ρ θ, không gian gọi không gian Hough Kết biến đổi Hough lưu giữ ma trận gọi accumulator Một chiều ma trận giá trị θ (giá trị góc) chiều giá trị ρ (khoảng cách) Các bước biến đổi Hough đơn giản cho đường thẳng: Nạp ảnh Tìm biên ảnh (dùng phương pháp tìm biên) Với pixels ảnh Nếu pixel (x,y) điểm biên (edge) với giá trị góc θ tính ρ góc (θ) với pixel (x,y) tăng vị trí (ρ, θ) accumulator Vẽ khơng gian Hough Tìm giá trị lớn accumulator Vẽ đường với giá trị lớn ảnh đầu vào Để tìm đường tròn sử dụng biểu thức (x -a)^2 + (y-b)^2 = r^2 Chúng ta có tham số Nếu viết lại phương trình nhận 21 a = x – r*cos(θ) b =y - r*sin(θ) cần mảng cấu trúc liệu accumulator chiều (3D) θ lấy giới hạn 360 Sau ảnh toàn thể xử lý, accumulator trơng giống hình bên Mảng accumulator vẽ với r trục y theta cắt chéo qua trục x (across the xaxis) Các đường đường cong accumulator - đường vật lý mạnh ảnh đầu vào tương ứng với vùng đen accumulator Chương trình biến đổi Hough tìm đường thẳng Ý tưởng: Tìm đường thẳng ảnh thơng số hoá dạng: r = xcosθ + ysinθ , r khoảng cách vng góc từ gốc toạ độ đến đường thẳng θ góc r với trục x Với điểm (x,y) đường r θ số Với N điểm thẳng hàng toạ độ Đề có phương trình r = xcosθ + ysinθ Biến đổi Hough chuyển N điểm thành N đường hình sin mặt phẳng (r,θ), chúng giao điểm (r,θ) Input: Ảnh nguyên dạng mảng chiều: Image1[xMax][yMax] 22 Output: Ảnh mới: Image2 [xMax][yMax] chứa đường thẳng tìm Intermediate data structure: Hough [tMax][rMax] to calculate the corresponding lines xMax, yMax: Kích thước ảnh tMax: Giới hạn lớn góc tìm kiếm; Chẳng hạn 3600 x, y toạ độ không gian ảnh Algorithm: /* Fill in the Hough array*/ for (x=0; x< xMax; x++){ // Tìm khắp for (y=0 ; y< yMax ; y++){ // pixel ảnh if ( Image1[x][y] > IThresh){ // Nếu độ sáng điểm ảnh > ngưỡng độ sáng for (t=0 ; t< tMax ; t++){ // Xem khoảng góc tìm kiếm r = (x-xMax/2)*cos(t) +(y-yMax/2)*sin(t) ; // Tính r thực if (r >0) {Hough [t][r] ++;} // Nếu r> cập nhật mảng Hough } /* Process Hough array to find strong maxima */ for (t = 0; t < tMax / 2; t++) // Tìm nửa giới hạn góc for (r = 0; r < rMax; r++) // Tìm giới hạn r if (Hough[t][r] > Hthresh) // Nếu số điểm Hough > ngưỡng đặt trước { /* Check 5x5 neighborhood for max */ max = TRUE; for (dt = (t - 2); dt = 0) && (dt < tMax) && (Hough[dt][dr] > Hough[t][r])) // Nếu điều kiện // max = FALSE { max = FALSE; break; } // Dựng lại ảnh /* Process Hough array to create output image array */ if (max == TRUE) { makeLine(r, t); } } void makeLine (r,t) { for (x=0 ; x

Ngày đăng: 16/12/2021, 12:43

Tài liệu cùng người dùng

Tài liệu liên quan