Journal of Mining and Earth Sciences Vol 64 , Issue 4 ( 2023 ) 1 - 11 1 Building a program to automatically classify point cloud data Quy Ngoc Bui 1,2,* , Hien Dinh Le 3 , Hiep Van Pham 1,2 , Tung Son Vu 4 , Quan Anh Duong 1,2 , Trang Thu Thi Tran 1 1 Faculty of Geomatics and Land Administration, Hanoi University of Mining and Geology, Vietnam 2 Research and Development of Geospatial Data Management and Analysis Techniques (GMA) , Hanoi University of Mining and Geology, Vietnam 3 Natural Resources and Environment One Member Co , Ltd, Hanoi , Vietnam 4 GeoPro Ltd, Hanoi , Vietnam ARTICLE INFO ABSTRACT Article history: Received 1 st Apr 2023 Revised 23 rd July 2023 Accepted 17 th Aug 2023 Along with cartography science and technology development, data acquisition through aeronautical laser scanning systems has been developing This is an essential and detailed data source for database construction, mapping, and city 3D modeling, City 3D modeling requires processing many types of data, at which point cloud data processing and classification play an essential role in creating input data sources for the model However, the processing and classification of point cloud data mainly depend on commercial software with very high costs; moreover, the algorithms and parameters of commercial software are locked That makes it impossible for the user to intervene to improve product accuracy Therefore, building a program to automatically cl assify point cloud data into different geographical objects helps us master data processing technology for creating 3D models It makes an important contribution to building and developing smart cities The article introduces the step - by - step classificatio n of LiDAR point cloud data and the process of automatically building a program to classify point cloud data based on Visual Studio Net language The result is a bilingual program automatically classifying point cloud data (Vietnamese - English) The progr am can read and fully deploy algorithms to process LiDAR point cloud data containing information with four color bands (red, green, blue, and near - infrared) The primary processing is based on proposed classification steps and thresholds for point cloud da ta classification into eight feature classes, including hydrology, solar land, traffic, low plants, medium plants, high plants, houses, and other objects, to establish 3D city models Copyright © 2023 Hanoi University of Mining and Geology All rights reserved Keywords: 3D city model, LiDAR, Point cloud , Program _____________________ * Corresponding author E - mail: b uingocquy@humg edu vn DOI: 10 46326/JMES 202 3 6 4 ( 4 ) 0 1 2 T ạ p chí Khoa h ọ c K ỹ thu ậ t M ỏ - Đ ị a ch ấ t T ậ p 64 , K ỳ 4 ( 2023 ) 1 - 11 _____________________ * Tác gi ả liên h ệ E - mail: buingocquy@humg edu vn DOI: 10 46326/JM 3 ES 202 3 6 4 (4) 01 Xây d ự ng chương trình t ự đ ộ ng phân lo ạ i d ữ li ệ u đám mây đi ể m Bùi Ng ọ c Quý 1,2,* , Lê Đình Hi ể n 3 , Ph ạ m Văn Hi ệ p 1,2 , Vũ Sơn Tùng 4 , Dương Anh Quân 1,2 , Tr ầ n Th ị Thu Trang 1 1 Khoa Tr ắ c đ ị a - B ả n đ ồ và Qu ả n lý đ ấ t đai, Trư ờ ng Đ ạ i h ọ c M ỏ - Đ ị a ch ấ t, Vi ệ t Nam 2 Nhóm nghiên c ứ u n ghiên c ứ u phát tri ể n công ngh ệ qu ả n lý và phân tích d ữ li ệ u không gian đ ị a lý , Hà N ộ i , Vi ệ t Nam 3 Công ty TNHH MTV Tài nguyên và Môi trư ờ ng Vi ệ t Nam, Hà N ộ i, Vi ệ t Nam 4 Công ty TNHH GeoPro, Hà N ộ i, Vi ệ t Nam THÔNG TIN BÀI BÁO TÓM T Ắ T Quá trình: Nh ậ n bài 1 / 4 / 2023 S ử a xong 23 / 7 / 2023 Ch ấ p nh ậ n đăng 17 / 8 / 2023 Cùng v ớ i s ự phát tri ể n trong lĩnh v ự c khoa h ọ c và công ngh ệ đo đ ạ c b ả n đ ồ , công tác thu nh ậ n d ữ li ệ u thông qua h ệ th ố ng quét laser hàng không đã có s ự phát tri ể n m ạ nh m ẽ Đây là ngu ồ n d ữ li ệ u quan tr ọ ng và chi ti ế t cho công tác xây d ự ng cơ s ở d ữ li ệ u, thành l ậ p b ả n đ ồ , xây d ự ng mô hình 3D thành ph ố , Quá trình xây d ự ng mô hình 3D thành ph ố đòi h ỏ i ph ả i x ử lý nhi ề u lo ạ i d ữ li ệ u, trong đó công tác x ử lý và phân lo ạ i d ữ li ệ u đám mây đi ể m có vai trò quan tr ọ ng trong vi ệ c t ạ o ngu ồ n d ữ li ệ u đ ầ u vào cho mô hình Tuy nhiên, vi ệ c x ử lý và phân lo ạ i d ữ li ệ u đám mây đi ể m hi ệ n nay ch ủ y ế u ph ụ thu ộ c vào các p h ầ n m ề m thương m ạ i có b ả n quy ề n v ớ i giá thành r ấ t cao, hơn n ữ a các thu ậ t toán và tham s ố c ủ a ph ầ n m ề m thương m ạ i đư ợ c mã hóa làm cho ngư ờ i dùng không th ể can thi ệ p đ ể c ả i thi ệ n đ ộ chính xác c ủ a s ả n ph ẩ m Do v ậ y, vi ệ c xây d ự ng m ộ t chương trình t ự đ ộ ng phân lo ạ i d ữ li ệ u đám mây đi ể m thành các đ ố i tư ợ ng đ ị a lý khác nhau giúp chúng ta có th ể làm ch ủ đư ợ c công ngh ệ x ử lý d ữ li ệ u ph ụ c v ụ công tác xây d ự ng các mô hình 3D thành ph ố ti ế n t ớ i góp ph ầ n quan tr ọ ng vào ti ế n trình xây d ự ng và phát tri ể n thành ph ố thông m inh Bài báo gi ớ i thi ệ u quy trình các bư ớ c th ự c hi ệ n phân lo ạ i d ữ li ệ u đám mây đi ể m LiDAR và quá trình tri ể n khai xây d ự ng chương trình t ự đ ộ ng phân lo ạ i d ữ li ệ u đám mây đi ể m d ự a trên ngôn ng ữ Visual Studio Net K ế t qu ả bài báo đã xây d ự ng đư ợ c chương trìn h t ự đ ộ ng phân lo ạ i d ữ li ệ u đám mây đi ể m song ng ữ (Vi ệ t – Anh), có th ể đ ọ c và tri ể n khai đ ầ y đ ủ các thu ậ t toán đ ể x ử lý d ữ li ệ u đám mây đi ể m LiDAR ch ứ a thông tin 4 kênh màu (đ ỏ , l ụ c, lam và c ậ n h ồ ng ngo ạ i) Quá trình x ử lý chính d ự a theo các bư ớ c và ngư ỡ ng phân lo ạ i đã đ ề xu ấ t cho phân lo ạ i d ữ li ệ u đám mây đi ể m thành 8 l ớ p đ ố i tư ợ ng đ ị a lý khác nhau bao g ồ m: th ủ y văn, m ặ t đ ấ t, giao thông, th ự c v ậ t th ấ p, th ự c v ậ t trung bình, th ự c v ậ t cao, nhà và các đ ố i tư ợ ng khác ph ụ c v ụ cho công tác thành l ậ p các mô hình 3 D thành ph ố © 2023 Trường Đại học Mỏ - Địa chất Tất cả các quyền được bảo đảm T ừ khóa: Chương trình, Đám mây đi ể m, LiDAR, Mô hình 3D thành ph ố Bùi Ng ọ c Quý và nnk /T ạ p chí Khoa h ọ c K ỹ thu ậ t M ỏ - Đ ị a ch ấ t 64 ( 4 ), 1 - 11 3 1 M ở đ ầ u Hi ệ n nay, trên th ế gi ớ i các nghiên c ứ u v ề mô hình 3D thành ph ố ph ụ c v ụ cho công tác mô hình hóa b ề m ặ t và xây d ự ng thành ph ố thông minh đã và đang đư ợ c chú tr ọ ng nghiên c ứ u và phát tri ể n Các mô hình 3D thành ph ố đư ợ c xây d ự ng là k ế t qu ả c ủ a quá trình tích h ợ p nhi ề u lo ạ i d ữ li ệ u khác nhau như: DEM, ả nh v ệ tinh, b ả n đ ồ đ ị a hình, ả nh s ố , d ữ li ệ u đám mây đi ể m LIDAR,… (Bui và nnk , 2020 ; 2021; Dương và nnk , 2 202 ; Lê, 2019 ; 2023 ) Quá trình xây d ự ng mô hình 3D thành ph ố đòi h ỏ i ph ả i x ử lý nhi ề u lo ạ i d ữ li ệ u, trong đó công tác x ử lý và phân lo ạ i d ữ li ệ u đám mây đi ể m có vai trò quan tr ọ ng trong vi ệ c t ạ o ngu ồ n d ữ li ệ u đ ầ u vào cho mô hình 3D thành ph ố N hi ề u công trình nghiên c ứ u đã đưa ra các phương pháp và thu ậ t toán v ề p hân lo ạ i đám mây đi ể m đ ể t ừ đó nh ậ n d ạ ng các đ ố i tư ợ ng b ằ ng cách phân l ớ p cho đám mây đi ể m thu nh ậ n đư ợ c, trong đó ch ủ y ế u t ậ p trung vào 2 hư ớ ng: (1) Các thu ậ t toán d ự a trên mô hình máy h ọ c (Alexandre, 2020; Arief và nnk , 2019; Chenglu và nnk , 2019; Qiang và nnk , 2020; Yongguang và nnk , 2020 ) ; (2) Các thu ậ t toán phân lo ạ i d ự a trên hình thái và ph ổ (Heidar và nnk , 2020; Markus and Jing, 2014; Ronggang và nnk , 2018; Wuzhao và nnk , 2020; Yi và nnk , 2020; Yangbin và nnk , 2018; Xudong và nnk , 2019) Th ự c t ế hi ệ n n ay , công ngh ệ đo đ ạ c thu th ậ p d ữ li ệ u đã d ị ch chuy ể n d ầ n t ừ các thi ế t b ị đo đ ạ c truy ề n th ố ng, đơn l ẻ t ừ ng đi ể m sang các thi ế t b ị thu th ậ p thông tin không gian m ộ t cách toàn di ệ n và nhanh chóng như máy quét laser m ặ t đ ấ t, máy quét laser di đ ộ ng (mobile mapping ), thi ế t b ị quét LiDAR trên máy bay hay trên UAV Đ ị nh d ạ ng d ữ li ệ u chung cho các thi ế t b ị này là d ữ li ệ u d ạ ng đám mây đi ể m 3D mang thông tin chính xác v ề t ọ a đ ộ đ ị a lý và nhi ề u thông tin khác như màu s ắ c, cư ờ ng đ ộ ph ả n x ạ , xung ph ả n h ồ i, V ớ i s ự xu ấ t hi ệ n c ủ a d ữ li ệ u đám mây đi ể m 3D, th ế gi ớ i th ự c đư ợ c th ể hi ệ n m ộ t cách đ ầ y đ ủ tr ự c quan v ớ i đúng t ỷ l ệ Hơn n ữ a, kh ố i lư ợ ng d ữ li ệ u đám mây đi ể m 3D đư ợ c thu th ậ p ngày càng nhi ề u đã t ạ o đi ề u ki ệ n thu ậ n l ợ i cung c ấ p ngu ồ n thông tin đa d ạ ng, đ ầ y đ ủ cho phân lo ạ i và xây d ự ng các đ ố i tư ợ ng n ộ i dung c ủ a mô hình 3D thành ph ố ph ụ c v ụ các ứ ng d ụ ng quy ho ạ ch, qu ả n lý môi trư ờ ng đô th ị , không gian, c ả nh quan, Tuy nhiên, v ớ i kh ố i lư ợ ng d ữ li ệ u l ớ n, vi ệ c phân lo ạ i d ữ li ệ u đám mây đi ể m hi ệ n nay h ầ u h ế t d ự a trên các công c ụ c ủ a ph ầ n m ề m thương m ạ i đi kèm c ủ a các hãng s ả n xu ấ t thi ế t b ị thu th ậ p d ữ li ệ u mà chưa có nhi ề u nghiên c ứ u xây d ự ng chương trình phân lo ạ i d ữ li ệ u đám mây đi ể m Hơn n ữ a, vi ệ c s ử d ụ ng các ph ầ n m ề m thương m ạ i đòi h ỏ i ph ả i chi phí mua b ả n quy ề n l ớ n, các t ham s ố và thu ậ t toán tính toán đư ợ c mã hóa làm cho ngư ờ i dùng không th ể can thi ệ p đ ể c ả i thi ệ n đ ộ chính xác c ủ a s ả n ph ẩ m ( Lê, 2023) Chính vì t h ế , vi ệ c thi ế t k ế và xây d ự ng chương trình máy tính ph ụ c v ụ công tác phân lo ạ i d ữ li ệ u đám mây đi ể m có ý nghĩa kh oa khoa h ọ c và th ự c ti ễ n cao 2 Thi ế t k ế t ổ ng th ể chương trình phân lo ạ i d ữ li ệ u đám mây đi ể m 2 1 Phương pháp phân lo ạ i d ữ li ệ u đám mây đi ể m D ữ li ệ u đám mây đi ể m LiDar đư ợ c thu nh ậ n đư ợ c v ớ i b ố n d ả i màu: đ ỏ - xanh l ụ c - xanh lam - h ồ ng ngo ạ i g ầ n D ự a trê n các đ ặ c đi ể m c ủ a đám mây đi ể m, nhóm nghiên c ứ u đã xây d ự ng quy trình chi ti ế t các bư ớ c đ ể phân lo ạ i t ự đ ộ ng d ữ li ệ u đám mây đi ể m thành các l ớ p d ữ li ệ u ch ứ a các đ ố i tư ợ ng đ ị a lý khác nhau bao g ồ m: l ớ p đi ể m m ặ t đ ấ t, l ớ p đi ể m giao thông, l ớ p đi ể m th ự c v ậ t, l ớ p đi ể m nhà và các l ớ p đi ể m các đ ố i tư ợ ng khác Đám mây đi ể m sau khi phân lo ạ i s ẽ là d ữ li ệ u đ ầ u vào đ ể thành l ậ p mô hình 3D thành ph ố Quy trình chi ti ế t bao g ồ m quá trình x ử lý v ớ i các thu ậ t toán l ọ c d ữ li ệ u đám mây đi ể m thành các l ớ p đ ố i tư ợ ng đ ị a lý k hác nhau Vi ệ c phân lo ạ i d ữ li ệ u đám mây đi ể m này d ự a trên ngư ỡ ng phân lo ạ i đư ợ c mô t ả trong H ình 1 M ứ c ngư ỡ ng đư ợ c phát tri ể n d ự a trên đ ặ c đi ể m t ự nhiên c ủ a các l ớ p đ ố i tư ợ ng trong đám mây đi ể m cũng như cư ờ ng đ ộ ph ả n x ạ c ủ a các đ ố i tư ợ ng đ ị a lý đư ợ c khuy ế n cáo t ừ hãng s ả n xu ấ t thi ế t b ị thu nh ậ n d ữ li ệ u ( B ả ng 1) Có b ố n đ ặ c đi ể m đư ợ c s ử d ụ ng đ ể phát tri ể n m ứ c ngư ỡ ng đó là: cư ờ ng đ ộ , ch ỉ s ố th ự c v ậ t (NDVI), chi ề u cao và hình h ọ c (Bui và nnk , 2021; Lê, 2023) B ả ng 1 Ph ạ m vi cư ờ ng đ ộ c ủ a các đám mây đi ể m CityMapper cho các đ ố i tư ợ ng khác nhau TT Đ ố i tư ợ ng Kho ả ng cư ờ ng đ ộ 1 Đư ờ ng nh ự a 2100 ÷ 5400 2 Bê tông 9000 ÷ 12500 3 Mái ngói 7300 ÷ 9700 4 M ặ t đ ấ t 7500 ÷ 13600 4 Bùi Ng ọ c Quý và nnk /T ạ p chí Khoa h ọ c K ỹ thu ậ t M ỏ - Đ ị a ch ấ t 64 ( 4 ), 1 - 11 B ả ng 1 cho th ấ y r ằ ng đư ờ ng nh ự a có th ể đư ợ c l ọ c ra kh ỏ i các v ậ t th ể m ặ t đ ấ t khác theo giá tr ị cư ờ ng đ ộ Vì n ề n đ ấ t b ằ ng ph ẳ ng trong khu v ự c g ồ m có đ ư ờ ng nh ự a, bê tông, ngói, đ ấ t ngõ, đ ấ t Các bư ớ c tri ể n khai phương pháp phân lo ạ i d ữ li ệ u đám mây đi ể m cho xây d ự ng chương trình t ự đ ộ ng phân lo ạ i d ữ li ệ u đám mây đi ể m đư ợ c quy trình hóa theo th ứ t ự tri ể n khai thu ậ t toán bao g ồ m: (1) L ọ c b ỏ đi ể m nhi ễ u; (2) Phân lo ạ i đi ể m m ặ t đ ấ t; (3) Phân lo ạ i giao thông; (4) Phân lo ạ i th ự c v ậ t; (5) Phân lo ạ i đi ể m mái nhà (Dương và nnk , 2022) 2 2 Sơ đ ồ thi ế t k ế h ệ th ố ng c hương trình máy tính phân lo ạ i d ữ li ệ u đám mây đi ể m Chương trình phân lo ạ i d ữ li ệ u đư ợ c thi ế t k ế đ ể làm vi ệ c v ớ i d ữ li ệ u đám mây đi ể m và d ữ li ệ u s ố hóa (đi ể m, đư ờ ng, vùng) Các đ ị nh d ạ ng d ữ li ệ u này s ẽ hi ể n th ị trong môi trư ờ ng 2D trên c ử a s ố chính c ủ a chương trình v ớ i các công c ụ h ỗ tr ợ tương tác đ ể ngư ờ i dùng có th ể thay đ ổ i các góc nhìn khác nhau c ủ a các đ ố i tư ợ ng, biên t ậ p và ch ỉ nh s ử a các d ữ li ệ u tr ự c ti ế p trên chương trình đã xây d ự ng Chương trình đư ợ c thi ế t k ế theo sơ đ ồ thi ế t k ế h ệ th ố ng v ớ i các nhóm ch ứ c năng và các công c ụ như H ình 2, trong đó t ậ p trung vào vi ệ c thi ế t k ế nhóm ch ứ c năng phân lo ạ i d ữ li ệ u đám mây đi ể m thành các l ớ p n ộ i dung như đã đ ề c ậ p trong m ụ c 2 1 3 Xây d ự ng chương trình phân lo ạ i d ữ li ệ u đám mây đi ể m 3 1 Thi ế t k ế giao di ệ n chương trình Chương trình đư ợ c thi ế t k ế trên n ề n t ả ng ngôn ng ữ l ậ p trình VisualBasic Net v ớ i giao di ệ n đơn gi ả n d ễ s ử d ụ ng, bao g ồ m 4 nhóm: (1) Menu bao g ồ m 6 m ụ c ch ứ c năng c hính: t ệ p, đ ị nh d ạ ng, v ẽ , góc nhìn, công c ụ và tr ợ giúp; (2) Các công c ụ ch ứ c năng: t ạ o m ớ i, m ở t ệ p, lưu, các công c ụ v ẽ đi ể m, đư ờ ng, hình tròn, ghi chú…, các công c ụ thay đ ổ i góc nhìn, các công c ụ phân lo ạ i đám mây đi ể m, công c ụ l ọ c, hi ể n th ị và phân lo ạ i l ạ i; (3) Màn hình hi ể n th ị : cho phép v ẽ các đ ố i tư ợ ng đ ồ h ọ a cơ b ả n như d ạ ng đi ể m, đư ờ ng, vùng và hi ể n th ị d ữ li ệ u Hình 1 Quy trình phân lo ạ i các đ ố i tư ợ ng t ừ d ữ li ệ u đám mây đi ể m (Bui và nnk , 2021; Lê, 2023) Hình 2 Sơ đ ồ thi ế t k ế h ệ th ố ng chương trình phân lo ạ i đám mây đi ể m (Lê 2023) Bùi Ng ọ c Quý và nnk /T ạ p chí Khoa h ọ c K ỹ thu ậ t M ỏ - Đ ị a ch ấ t 64 ( 4 ), 1 - 11 5 đám mây đi ể m trên giao di ệ n c ủ a chương trình; (4) Thanh tr ạ ng thái phía dư ớ i, hi ể n th ị thông tin v ề t ọ a đ ộ c ủ a con tr ỏ ( H ình 3) 3 2 Thi ế t k ế ch ứ c năng c ủ a chương trình phân lo ạ i d ữ li ệ u đám mây đi ể m Chương trình đư ợ c thi ế t k ế v ớ i 7 nhóm ch ứ c năng bao g ồ m: (1) Nhóm ch ứ c năng qu ả n lý t ệ p; (2) Nhóm ch ứ c năng hi ể n th ị cho phép tùy ch ỉ nh đ ị nh d ạ ng hi ể n th ị c ủ a các đ ố i tư ợ ng đư ợ c s ố hóa b ở i ph ầ n m ề m; (3) Nhóm ch ứ c năng s ố hóa; (4) Nhóm ch ứ c năng đi ề u ch ỉ nh góc nhìn; (5) Nhóm các công c ụ b ổ tr ợ như đo kho ả ng cách, công c ụ đo di ệ n tích, công c ụ tra c ứ u thông tin đám mây đi ể m; (6) Nhóm công c ụ tr ợ giúp gi ớ i thi ệ u v ề chương trình và 1 s ố thông tin hư ớ ng d ẫ n, đ ồ ng th ờ i có th ể l ự a ch ọ n chuy ể n đ ổ i ngôn ng ữ c ủ a chương trình qua l ạ i gi ữ a ti ế ng Vi ệ t và ti ế ng Anh; (7) Nhóm ch ứ c năng phân lo ạ i d ữ li ệ u đám mây đi ể m bao g ồ m các công c ụ th ự c hi ệ n các tính năng phân lo ạ i đám mây đi ể m đư ợ c thi ế t k ế và xây d ự ng theo logic các bư ớ c đã đ ề xu ấ t trong m ụ c 2 1 bao g ồ m các c ông c ụ : lo ạ i b ỏ đi ể m nhi ễ u; phân lo ạ i đi ể m m ặ t đ ấ t; phân lo ạ i đi ể m đư ờ ng giao thông; phân lo ạ i đi ể m th ự c v ậ t; phân lo ạ i nhà; tái phân lo ạ i; l ọ c hi ể n th ị theo l ớ p 3 3 L ậ p trình xây d ự ng chương trình phân lo ạ i d ữ li ệ u đám mây đi ể m 3 3 1 Khai báo c ử a s ổ hi ể n th ị d ữ li ệ u Chương trình đư ợ c thi ế t k ế đ ể phân đ ị nh rõ gi ữ a h ệ t ọ a đ ộ th ự c - r và h ệ t ọ a đ ộ màn hình - V H ệ t ọ a đ ộ th ự c lưu tr ữ thông tin t ọ a đ ộ th ự c c ủ a m ỗ i đ ố i tư ợ ng trong khi h ệ t ọ a đ ộ màn hình lưu tr ữ giá tr ị t ọ a đ ộ hi ể n th ị c ủ a các đ ố i tư ợ ng trên c ử a s ổ hi ể n th ị d ữ li ệ u Do đó, v ớ i b ấ t k ỳ đ ố i tư ợ ng nào có trong d ữ li ệ u đám mây đi ể m đ ầ u vào, s ẽ đư ợ c lưu tr ữ thông tin dư ớ i d ạ ng c ả 2 h ệ t ọ a đ ộ Vì v ậ y , chương trình đã đư ợ c xây d ự ng 6 hàm đ ể chuy ể n đ ổ i t ừ h ệ t ọ a đ ộ th ự c sang h ệ t ọ a đ ộ màn hình cho giá tr ị X,Y và h ệ s ố t ỷ l ệ m ''''Cac tham so anh xa Dim vXo, vYo As Integer Dim rXo, rYo As Double Dim m As Double Dim rXmin, rYmin, rZmin As Double Dim rXmax, rYmax, rZmax As Double Dim rLasXmin, rLasYmin As Double Dim rLasXmax, rLasYmax As Double ''''Tu man hinh sang thuc Private Function rX(ByVal vX As Double) As Integer Return (rXo + (vX - vXo) / m) End Function Private Function rY(ByVal vY As Double) As Integer Return (rYo - (vY - vYo) / m) End Function Private Function rS(ByVal vS As Double) As Integer Return (vS / m) Hình 3 Giao di ệ n chương trình ( Lê, 2023) 6 Bùi Ng ọ c Quý và nnk /T ạ p chí Khoa h ọ c K ỹ thu ậ t M ỏ - Đ ị a ch ấ t 64 ( 4 ), 1 - 11 End Function ''''Tu thuc sang man hinh Private Function vX(ByVal rX As Double) As Integer Return (vXo + m * (rX - rXo)) End Function Private Function vY(ByVal rY As Double) As Integer Return (vYo - m * (rY - rYo)) End Function Private Function vS(ByVal rS As Double) As Integer Return (m * rS) End Function Trong 6 hàm trên, có rX, rY, rS, vS là các bi ế n s ố , ứ ng v ớ i t ọ a đ ộ th ự c và t ọ a đ ộ màn hình c ủ a m ỗ i đi ể m ; rXo, rYo là h ằ ng s ố , m ặ c đ ị nh ban đ ầ u có giá tr ị là 0 ; vXo, vYo, m cũng là h ằ ng s ố , đư ợ c xác đ ị nh khi m ở c ử a s ổ chương trình Mã ngu ồ n l ệ nh m ở c ử a s ổ chương trình và xác đ ị nh các h ằ ng s ố vXo, vYo, m đư ợ c xác đ ị nh như sau: Private Sub FrmView_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase Load g = PicView CreateGraphics m = 1 vXo = PicView Width / 2 vYo = PicView Height / 2 End Sub 3 3 2 Khai báo khuôn d ạ ng d ữ li ệ u Đ ố i v ớ i l ớ p d ữ li ệ u đư ờ ng, polyline, hình tròn và ghi chú chương trình ch ỉ lưu tr ữ dư ớ i d ạ ng 2D do chương trình không thi ế t k ế đ ể hi ể n th ị trong môi trư ờ ng 3D V ớ i m ỗ i d ạ ng đ ố i tư ợ ng, ti ế n hành khai báo m ộ t m ả ng d ữ li ệ u 2D, bao g ồ m các giá tr ị v ề t ọ a đ ộ v ị trí dư ớ i d ạ ng s ố th ự c, đ ồ ng th ờ i v ớ i m ộ t giá tr ị s ố lư ợ ng d ạ ng s ố nguyên tương ứ ng Đư ờ ng tròn khai báo thêm giá tr ị bán kính, còn ghi chú khai báo thêm giá tr ị n ộ i dung ghi chú dư ớ i d ạ ng string Structure Line_2D Dim rX1 As Double Dim rY1 As Double Dim rX2 As Double Dim rY2 As Double End Structure Dim DS_Lines() As Line_2D, LinesCount As Integer Structure Circle_2D Dim rX1 As Double Dim rY1 As Double Dim rR1 As Double End St ructure Dim DS_Circles() As Circle_2D, CirclesCount As Integer Đ ố i v ớ i đ ị nh d ạ ng d ữ li ệ u polyline, ti ế n hành khai báo m ả ng polyline bao g ồ m m ả ng các vertex và s ố lư ợ ng vertex, cùng v ớ i s ố lư ợ ng polyline M ỗ i v ertex s ẽ ch ứ a thông s ố v ề t ọ a đ ộ X , Y t ừ ng vertex Structure Polyline_2D Dim DS_Vertexs() As Point_3D, VertexsCount As Integer End Structure Dim DS_Polylines() As Polyline_2D, PolylinesCount As Integer Ngoài ra, đ ể ph ụ c v ụ cho thu ậ t toán phân lo ạ i đi ể m m ặ t đ ấ t, chương trình c ầ n khai báo thêm m ả ng ô lư ớ i (grid) và m ả ng tam giác ( triangle ) M ả ng g rid bên trong bao g ồ m các m ả ng con đ ể lưu tr ữ các đi ể m trong m ỗ i ô lư ớ i cùng v ớ i s ố lư ợ ng g rid M ả ng triangle lưu tr ữ dư ớ i d ạ ng ba đ ỉ nh c ủ a tam giác và s ố lư ợ ng tam giác Structure Grid_2D Dim DS_Vertexs() As Point_3D, VertexsCount As Integer End Structure Dim DS_Grids() As Grid_2D, GridsCount As Integer Structure Triang le Dim iD1 As Integer Dim iD2 As Integer Dim iD3 As Integer End Structure Dim DS_Triangles() As Triangle, TrianglesCount As Integer Đ ố i v ớ i đ ị nh d ạ ng d ữ li ệ u đám mây đi ể m, do d ữ li ệ u LiDAR ngoài thông tin t ọ a đ ộ X, Y, Z còn bao g ồ m thông tin v ề cư ờ ng đ ộ tia quét, l ớ p phân lo ạ i, thông tin v ề b ố n d ả i màu : đ ỏ , l ụ c, l am và c ậ n h ồ ng ngo ạ i, nên c ấ u trúc đ ị nh d ạ ng đám mây đi ể m đư ợ c khai báo theo mã ngu ồ n l ệ nh khai báo đ ị nh d ạ ng d ữ li ệ u cho đám mây đi ể m như sau: Structure LasPoin t_3D Dim rX1 As Double Dim rY1 As Double Dim rZ1 As Double Dim classification As Integer Dim Intensity As Integer Dim Red As Integer Dim Green As Integer Dim Blue As Integer Dim NIR As Integer End Structure Bùi Ng ọ c Quý và nnk /T ạ p chí Khoa h ọ c K ỹ thu ậ t M ỏ - Đ ị a ch ấ t 64 ( 4 ), 1 - 11 7 3 3 3 Khai báo đ ọ c d ữ li ệ u Chương trình đư ợ c xây d ự ng đ ể đ ọ c đư ợ c d ữ li ệ u đám mây đi ể m D ữ li ệ u đám mây đi ể m c ầ n đư ợ c lưu tr ữ dư ớ i d ạ ng t ệ p văn b ả n, m ỗ i đi ể m tươ ng ứ ng v ớ i m ộ t dòng, bao g ồ m các thông tin v ề t ọ a đ ộ X, Y, Z, cư ờ ng đ ộ , thông tin màu s ắ c bao g ồ m giá tr ị đ ỏ , l ụ c, l am, c ậ n h ồ ng ngo ạ i và thông tin v ề phân l ớ p M ỗ i thông tin s ẽ đư ợ c ngăn cách b ằ ng ký hi ệ u ngăn cách – delimeter thư ờ ng là d ấ u cách tr ố ng ho ặ c d ấ u ph ẩ y Do đó , c ầ n xây d ự ng m ộ t hàm giúp nh ậ n di ệ n ký hi ệ u ngăn cách này và lưu thông tin c ủ a t ừ ng đi ể m gi ữ a m ỗ i ký hi ệ u ngăn cách Đ ặ t tên hàm này là SplitChain (tách chu ỗ i) Function SplitChain(ByVal Text As String, ByVal Delimeter As String, ByRef Words() As String) As Integer Dim n As Integer, i As Integer i = 0 Do i = i + 1 Text = Trim(Text) n = InStr(Text, Delimeter) ReDim Preserve Words(i) If n > 0 Then Words(i) = Mid(Text, 1, n - 1) Text = Mid(Text, n + 1) Else Words(i) = Text Return i Exit Do End If Loop End Function Nguyên lý hàm tách chu ỗ i này như sau: s ử d ụ ng l ệ nh l ặ p Do - Loop, v ớ i bi ế n i ch ạ y Đ ầ u tiên th ự c hi ệ n c ắ t b ỏ các kho ả ng tr ố ng th ừ a hai đ ầ u m ỗ i dòng v ớ i hàm Trim(Text) Ti ế p đ ế n xác đ ị nh giá tr ị s ố lư ợ ng ch ữ - n cho đ ế n khi g ặ p ký t ự ngăn cách – delimeter b ằ ng hàm InStr V ớ i đi ề u ki ệ n n > 0, hàm s ẽ l ầ n lư ợ t lưu các giá tr ị gi ữ a các ký t ự ngăn cách vào m ả ng Word(i) b ằ ng hàm Mid(Text, 1, n - 1) Như v ậ y các thông s ố v ề X, Y, Z, cư ờ ng đ ộ , thông tin màu s ắ c s ẽ đư ợ c l ầ n lư ợ t lưu vào m ả ng Word(i) 3 3 4 Khai báo hi ể n th ị d ữ li ệ u D ữ li ệ u đư ợ c hi ể n th ị dư ớ i d ạ ng 2D, theo góc nhìn th ẳ ng đ ứ ng t ừ trên xu ố ng V ớ i m ỗ i đ ố i tư ợ ng đư ợ c v ẽ , đ ề u có l ệ nh Graphic draw đ ể v ẽ các đ ố i tư ợ ng v ớ i màu s ắ c m ặ c đ ị nh là tr ắ ng trên n ề n đen V ớ i d ữ li ệ u đám mây đi ể m * las, sau khi đư ợ c t ả i vào chương trìn h, d ữ li ệ u s ẽ đư ợ c x ử lý đ ể t ự đ ộ ng đưa toàn b ộ d ữ li ệ u v ề màn hình hi ể n th ị (Hình 4) Hình 4 Giao di ệ n hi ể n th ị d ữ li ệ u đám mây đi ể m ( Lê, 2023) 8 Bùi Ng ọ c Quý và nnk /T ạ p chí Khoa h ọ c K ỹ thu ậ t M ỏ - Đ ị a ch ấ t 64 ( 4 ), 1 - 11 4 K ế t qu ả và th ả o lu ậ n 4 1 K ế t qu ả xây d ự ng chương trình phân lo ạ i d ữ li ệ u đám mây đi ể m V ớ i m ỗ i modul công c ụ ch ứ c năng sau khi xây d ự ng s ẽ đư ợ c ti ế n hành ch ạ y th ử v ớ i d ữ li ệ u đám mây đi ể m có s ố lư ợ ng t ừ nh ỏ đ ế n l ớ n đ ể ki ể m tra, n ế u có phát sinh l ỗ i thì s ẽ ti ế n hành ki ể m tra l ỗ i và th ự c hi ệ n các ch ỉ nh s ử a c ầ n thi ế t M ỗ i modul công c ụ s ẽ đư ợ c hoàn thi ệ n sau khi ch ạ y th ử d ữ li ệ u ở nhi ề u khu v ự c khác nhau và lo ạ i b ỏ h ế t cá c trư ờ ng h ợ p phát sinh l ỗ i Các câu l ệ nh cũng đư ợ c biên t ậ p ra các ch ứ c năng riêng và b ố trí m ộ t cách g ọ n gàng nh ấ t, giúp tăng cư ờ ng t ố c đ ộ x ử lý d ữ li ệ u, tránh các bư ớ c ch ạ y đư ờ ng vòng, lãng phí th ờ i gian và tài nguyên b ộ nh ớ K ế t qu ả xây d ự ng chương trìn h có th ể hi ể n th ị và x ử lý phân lo ạ i d ữ li ệ u đám mây đi ể m đ ể tách d ữ li ệ u thành 8 l ớ p d ữ li ệ u đ ị a lý bao g ồ m: m ặ t nư ớ c, m ặ t đ ấ t, giao thông, th ự c v ậ t th ấ p, th ự c v ậ t trung bình, th ự c v ậ t cao, nhà c ử a và các đ ố i tư ợ ng khác 4 2 Ứ ng d ụ ng chương trình trong p hân lo ạ i d ữ li ệ u đám mây đi ể m Trên cơ s ở chương trình đã xây d ự ng nhóm nghiên c ứ u ti ế n hành th ự c nghi ệ m phân lo ạ i d ữ li ệ u đám mây đi ể m cho khu v ự c phư ờ ng Thư ợ ng Lý, thành ph ố H ả i Phòng ( H ình 5) Đám mây đi ể m đư ợ c s ử d ụ ng công c ụ l ọ c nhi ễ u đ ể l ọ c b ỏ các đi ể m th ấ p, k ế t qu ả thu đư ợ c nh ữ ng khu v ự c không có d ữ li ệ u và đưa v ề l ớ p th ủ y văn T i ế p theo , ti ế n hành l ự a ch ọ n công c ụ l ọ c m ặ t đ ấ t và thi ế t l ậ p các tham s ố cho thu ậ t toán l ọ c m ặ t đ ấ t bao g ồ m kích thư ớ c c ủ a ô lư ớ i; kho ả ng cách và góc l ặ p l ầ n 1; đ ộ bi ế n thiên c ủ a d ữ li ệ u; kho ả ng cách và góc l ặ p l ầ n 2 ( H ình 6) Khi đó , chương trình s ẽ căn c ứ vào kích thư ớ c c ủ a ô lư ớ i đư ợ c l ự a ch ọ n đ ể xác đ ị nh các đi ể m h ạ t gi ố ng là các đi ể m th ấ p nh ấ t trong các ô lư ớ i và ti ế n hành tam giác hóa b ề m ặ t đ ể t ạ o mô hình TIN D ự a trên b ề m ặ t TIN này chương trình ti ế n hành áp d ụ ng các đi ề u ki ệ n v ề kho ả ng cách và góc l ặ p đ ể xác đ ị nh đi ể m m ặ t đ ấ t, c ụ th ể đi ể m đư ợ c xét là đi ể m n ằ m trong tam giác đ ồ ng th ờ i th ỏ a mãn đi ề u ki ệ n nh ỏ hơn giá tr ị tham s ố c ủ a kho ả ng cách và góc l ặ p mà ngư ờ i dùng đã thi ế t l ậ p Khi đó , đi ể m này s ẽ đư ợ c tính là đi ể m m ặ t đ ấ t, chương trình s ẽ xóa b ỏ tam giác ch ứ a nó và s ử d ụ ng đi ể m này đ ể l ậ p 3 tam giác gi ữ a đi ể m đó và 3 c ạ nh c ủ a tam giác ban đ ầ u Sau khi vòng l ặ p 1 k ế t thúc chương trình s ẽ ti ế n hành tương t ự cho vòng l ặ p th ứ 2 v ớ i các tham s ố đã đư ợ c ngư ờ i dùng xác đ ị nh v ớ i đi ể m kh ở i tính ban đ ầ u là các đi ể m m ặ t đ ấ t c ủ a vòng l ặ p th ứ nh ấ t v ớ i giá tr ị góc l ặ p l ớ n hơn và kho ả ng cách l ặ p nh ỏ hơn l ầ n 1 đ ể xác đ ị nh các đi ể m m ặ t đ ấ t ở nh ữ ng khu v ự c đ ị a hình có đ ộ Hình 5 V ị trí khu v ự c phư ờ ng Thư ợ ng Lý, thành ph ố H ả i Phòng Bùi Ng ọ c Quý và nnk /T ạ p chí Khoa h ọ c K ỹ thu ậ t M ỏ - Đ ị a ch ấ t 64 ( 4 ), 1 - 11 9 d ố c l ớ n cũng như tránh cho bư ớ c nh ả y l ớ n vào b ề m ặ t c ủ a các đ ố i tư ợ ng khác (Dương và nnk , 2022) K ế t qu ả cu ố i cùng s ẽ tách đư ợ c l ớ p đi ể m m ặ t đ ấ t ra kh ỏ i d ữ li ệ u đám mây đi ể m g ố c ban đ ầ u ( H ình 7) Sau khi phân lo ạ i xong các đi ể m m ặ t đ ấ t, ti ế n hành phân lo ạ i l ớ p đư ờ ng giao thông d ự a trên d ữ li ệ u các đi ể m m ặ t đ ấ t đã đư ợ c tách ra t ừ quá trình l ọ c m ặ t đ ấ t Chương trình s ẽ d ự a trên tham s ố v ề giá tr ị cư ờ ng đ ộ mà ngư ờ i d ùng nh ậ p vào ( H ình 8) đ ể l ọ c ra các đi ể m đư ờ ng giao thông K ế t qu ả c ủ a quá trình này s ẽ tách đư ợ c l ớ p m ặ t đ ấ t và l ớ p đư ờ ng giao thông ( H ình 9) Sau khi l ọ c các đ ố i tư ợ ng giao thông, ti ế n hành l ọ c các đ ố i tư ợ ng th ự c v ậ t Th ự c v ậ t đư ợ c l ọ c ra thành 3 l ớ p (th ấ p, trung bình và cao) d ự a trên giá tr ị NDVI k ế t h ợ p v ớ i đ ộ cao c ủ a đi ể m so v ớ i b ề m ặ t TIN đư ợ c t ạ o ra t ừ k ế t qu ả phân lo ạ i đi ể m m ặ t đ ấ t K ế t qu ả c ủ a quá trình này s ẽ thu đư ợ c 4 l ớ p th ự c v ậ t th ấ p, th ự c v ậ t trung bình, th ự c v ậ t cao và các đ ố i tư ợ ng khác Cu ố i cùng chương trình ti ế n hành tri ể n khai thu ậ t toán đ ể phân lo ạ i l ớ p nhà trên cơ s ở d ữ li ệ u các đ ố i tư ợ ng khác v ừ a đư ợ c tách ra t ừ quá trình ph ân lo ạ i th ự c v ậ t d ự a vào đ ặ c đi ể m d ữ li ệ u lúc này đó là các đi ể m n ằ m trên m ộ t m ặ t ph ẳ ng đ ả m b ả o th ỏ a mãn góc d ố c so v ớ i b ề m ặ t đ ấ t m ộ t giá tr ị đư ợ c xác đ ị nh c ủ a ngư ờ i dùng s ẽ đư ợ c đưa v ề l ớ p nhà K ế t qu ả s ẽ thu nh ậ n đư ợ c l ớ p nhà ( H ình 10) và các đ ố i tư ợ ng đ ị a lý còn l ạ i s ẽ đư ợ c đưa vào l ớ p các đ ố i tư ợ ng khác Hình 6 Xác đ ị nh các tham s ố cho công c ụ l ọ c đi ể m m ặ t đ ấ t Hình 7 K ế t qu ả phân lo ạ i l ớ p m ặ t đ ấ t (Dương và nnk , 2022) Hình 8 Xác đ ị nh tham s ố cho l ọ c đư ờ ng giao thông Hình 9 L ớ p giao thông đư ợ c tách ra t ừ l ớ p đi ể m m ặ t đ ấ t d ự a trên giá tr ị cư ờ ng đ ộ (Dương và nkk , 2022) Hình 10 K ế t qu ả phân lo ạ i l ớ p đi ể m mái nhà (Dương và nkk , 2022) 10 Bù i Ng ọ c Quý và nnk /T ạ p chí Khoa h ọ c K ỹ thu ậ t M ỏ - Đ ị a ch ấ t 64 ( 4 ), 1 - 11 5 K ế t lu ậ n Bài báo đã ti ế n hành xây d ự ng và hi ệ n th ự c hóa các bư ớ c tri ể n khai phân lo ạ i d ữ li ệ u đám mây đi ể m trên cơ s ở thu ậ t toán và ngư ỡ ng phân lo ạ i đư ợ c đ ề xu ấ t b ở i nhóm tác gi ả trong nghiên c ứ u c ủ a (Bùi và nnk , 2021; Lê, 2023) K ế t qu ả xây d ự ng chương trình phân lo ạ i d ữ li ệ u đám mây đi ể m c ủ a bài báo cho th ấ y chúng ta hoàn toàn có th ể ch ủ đ ộ ng công tác thi ế t k ế và xây d ự ng các chương trình máy tính h ỗ tr ợ cho phân lo ạ i d ữ li ệ u đám mây đi ể m đ ộ c l ậ p mà không quá ph ụ thu ộ c vào các ph ầ n m ề m thương m ạ i như hi ệ n nay Ch ương trình phân lo ạ i d ữ li ệ u đám mây đi ể m đã xây d ự ng đ ả m b ả o đ ọ c đư ợ c d ữ li ệ u đám mây đi ể m có ch ứ a thông tin 4 kênh màu bao g ồ m đ ỏ , l ụ c, lam và c ậ n h ồ ng ngo ạ i và có th ể tri ể n khai đ ầ y đ ủ các thu ậ t toán phân lo ạ i d ữ li ệ u đám mây đi ể m theo quy trình các bư ớ c đã đ ề xu ấ t và có th ể phân lo ạ i d ữ li ệ u đám mây đi ể m thành các đ ố i tư ợ ng đ ị a lý riêng bi ệ t bao g ồ m: th ủ y văn, m ặ t đ ấ t, giao thông, th ự c v ậ t th ấ p, th ự c v ậ t trung bình, th ự c v ậ t cao, nhà và các đ ố i tư ợ ng khác Chương trình có giao di ệ n đơn gi ả n, d ễ nhìn, d ễ s ử d ụ ng v ớ i 2 ngôn ng ữ t i ế ng Vi ệ t và t i ế ng Anh Đ ặ c bi ệ t, chương trình có th ể l ự a ch ọ n các tham s ố cho t ừ ng đ ố i tư ợ ng trong quá trình phân lo ạ i đ ể phù h ợ p v ớ i t ừ ng nhóm đ ố i tư ợ ng đ ị a lý trong nh ữ ng đi ề u ki ệ n đ ị a lý khác nhau giúp cho k ế t qu ả phân lo ạ i đ ả m b ả o sát v ớ i th ự c t ế nh ấ t V ớ i chương trình máy tính đã xây d ự ng, ngư ờ i dùng có th ể đ ọ c, hi ể n th ị và ti ế n hành phân lo ạ i đám mây đi ể m ra nhi ề u các phân l ớ p khác nhau m ộ t cách t ự đ ộ ng nh ằ m cung c ấ p d ữ li ệ u đ ầ u vào cho xây d ự ng các mô hình 3D thành ph ố Ngo ài ra, chương trình cũng cho phép s ố hóa các đ ố i tư ợ ng đ ồ h ọ a d ạ ng đi ể m, đư ờ ng, vùng h ỗ tr ợ công tác đánh d ấ u các đ ố i tư ợ ng khi c ầ n thi ế t, đây cũng là m ộ t s ự k ế t h ợ p c ầ n thi ế t mà ít các ph ầ n m ề m thương m ạ i hi ệ n nay quan tâm xây d ự ng Đóng góp c ủ a tác gi ả B ùi Ng ọ c Quý - lên ý tư ở ng thi ế t k ế , vi ế t ph ầ n phương pháp và hoàn thi ệ n b ả n th ả o; Lê Đình Hi ể n - l ậ p trình xây d ự ng chương trình; Dương Anh Quân - đ ánh giá các k ế t qu ả th ự c nghi ệ m và biên t ậ p b ả n th ả o; Ph ạ m Văn Hi ệ p - ch ạ y th ử nghi ệ m và ki ể m tra d ữ li ệ u sa u phân lo ạ i; Vũ Sơn Tùng - l ọ c d ữ li ệ u, b ắ t l ỗ i chương trình; Tr ầ n Th ị Thu Trang – thu th ậ p d ữ li ệ u đám mây đi ể m th ự c nghi ệ m, biên t ậ p và rà soát b ả n th ả o Tài li ệ u tham kh ả o Alexandre Boulch (2020) ConvPoint: Continuous Convolutions for Point Cloud Proce ssing Computers and Graphics , 88, 24 - 34 doi org/10 1016/j cag 2020 02 005 Arief, H A A , Indahl, U G , Strand, G H , & Tveite, H (2019) Addressing overfitt ing on point cloud classification using Atrous XCRF ISPRS Journal of Photogrammetry and Remote Sensing , 155 , 90 - 101 doi org/10 1016/j isprsjprs 2019 07 002 Bui, N Q , Le, D H , Duong, A Q , Nguyen Q L (2021) Rule - based classification of Airborne Laser Scanner data for automatic extraction of 3D objects in the urban area Journa l of the Polish Mineral Engineering Society , 48(2), 103 - 114 DOI: doi org/10 29227/IM - 2021 - 02 - 09 Bui, N Q , Le, Di H , Nguyen, Q L , Tong, S S , Duong, A Q , Pham , V H , Phan, T H , Pham, T L (2020) Method of defining the parameters for UAV point cloud classification algorithm Journal of the Polish Mineral Engineering Society , 46(1) 49 - 56 DOI: doi org/1 0 29227/IM - 2020 - 02 - 08 Chenglu Wen, Xiaotian Sun, Jonathan Li, Cheng Wang, Yan Guo, Ayman Habib (2019) A Deep Learning Framework for Road Marking Extraction, Classification and Completion from Mobile Laser Scanning Point Clouds ISPRS Journal of Photogrammetry and Remote Sensing, 147, 178 - 92 doi org/10 1016/j isprsjprs 2018 10 007 Dương, A Q , Lê, Đ H , Ph ạ m, V H , Nguy ễ n, Q C , Bùi, N Q (2022) Xây d ự ng quy trình thu nh ậ n, x ử lý và phân lo ạ i d ữ li ệ u đám mây đi ể m LiDAR ph ụ c v ụ thành l ậ p mô hình 3D thành ph ố T ạ p chí Khoa h ọ c K ỹ thu ậ t M ỏ - Đ ị a ch ấ t, 63(4), 1 - 12 doi:10 46326/JMES 2022 63(4) 01 H eidar Rastiveis, Alireza Shams, Wayne A Sarasua, Jonathan Li (2020) Automated Extraction of Lane Markings from Mobile LiDAR Point Clouds Based on Fuzzy Inference ISPRS Journal of Photogrammetry and Remote Bùi Ng ọ c Quý và nnk /T ạ p chí Khoa h ọ c K ỹ thu ậ t M ỏ - Đ ị a ch ấ t 64 ( 4 ), 1 - 11 9 Sensing, 160, 149 - 66 doi org/10 1016/j isprsjprs 2019 12 009 Lê, Đ H (2019) Nghiên c ứ u quy trình x ử lý d ữ li ệ u thu nh ậ n t ừ h ệ th ố ng bay ch ụ p ả nh & quét Lidar Leica City Mapper trong thành l ậ p mô hình C yber City Lu ậ n văn Th ạ c sĩ K ỹ thu ậ t, Trư ờ ng Đ ạ i h ọ c M ỏ - Đ ị a ch ấ t Hà N ộ i, 82 trang (Vi ệ t Nam) Lê, Đ H (2023) Nghiên c ứ u t ố i ưu hóa thu ậ t toán t ự đ ộ ng phân lo ạ i d ữ li ệ u đám mây đi ể m h ỗ tr ợ xây d ự ng mô hình 3D thành ph ố thông minh Lu ậ n án Ti ế n sĩ K ỹ thu ậ t, Trư ờ ng Đ ạ i h ọ c M ỏ - Đ ị a ch ấ t Hà N ộ i, 135 trang (Vi ệ t Nam) Markus Gerke, Jing Xiao (2014) Fusion of Airborne Laserscanning Point Clouds and Images for Supervised and Unsupervised Scene Classification ISPRS Journal of Photogrammetry and Remote Se nsing , 87, 78 - 92 doi org/10 1016/j isprsjprs 2013 10 011 Qiang Lu, Chao Chen, Wenjun Xie, Yuetong Luo (2020) “PointNGCNN: Deep Convolutional Networks on 3D Point Clouds with Neighborhood Graph Filters Computers and Graphics , 86, 42 – 51 doi org/10 1016/j c ag 2019 11 005 Ronggang Huang, Bisheng Yang, Fuxun Liang, Wenxia Dai, Jianping Li, Mao Tian, Wenxue Xu (2018) A Top - down Strategy for Buildings Extraction from Complex Urban Scenes Using Airborne LiDAR Point Clouds Infrared Physics and Technology, 92, 203 - 18 doi org/10 1016/j infrared 2018 05 021 Wuzhao Li, Fu Dong Wang, Gui Song Xia (2020) A Geometry - Attentional Netwo rk for ALS Point Cloud Classification ISPRS Journal of Photogrammetry and Remote Sensing, 164, 26 - 40 doi org/10 1016/j isprsjprs 2020 03 016 Xudong Lai, Yif ei Yuan, Yongxu Li, Mingwei Wang (2019) Full - Waveform LiDAR Point Clouds Classification Based on Wavelet Support Vector Machine and Ensemble Learning Sensors , 19(14) doi org/10 3390/s19143191 Yangbin Lin, Cheng Wang, Dawei Zhai, Wei Li, Jonathan Li (2018) Toward Better Boundary Preserved Supervoxel Segmentation for 3D Point Clouds ISPRS Journal of Photogrammetry and Remote Sensing , 143, 39 - 47 doi org/10 1016/j isprsjprs 2018 05 004 Yi Yang, Hairong Fang, Yuefa Fang, Shijian Shi (2020) Three - Dimensional Point Cloud Data Subtle Feature Extraction Algorithm for Laser Scanning Measurement of Large - Scale Irregular Surface in Reverse Engineering Journal of Measurement , 151, 107 - 220 doi org/10 1016/j measurement 2019 10722 0 Yongguang Yang, Feng Chen, Fei Wu, Deliang Zeng, Yi - mu Ji, Xiao - Yuan Jing (2020) Multi - View Semantic Learning Network for Point Cloud - Based 3D Object Detection Neurocomputing , doi org/10 1016/j n eucom 2019 10 116
Trang 1Building a program to automatically classify point
cloud data
Quy Ngoc Bui 1,2,*, Hien Dinh Le 3, Hiep Van Pham 1,2, Tung Son Vu 4, Quan Anh Duong 1,2, Trang Thu Thi Tran 1
1 Faculty of Geomatics and Land Administration, Hanoi University of Mining and Geology, Vietnam
2 Research and Development of Geospatial Data Management and Analysis Techniques
(GMA), Hanoi University of Mining and Geology, Vietnam
3 Natural Resources and Environment One Member Co., Ltd, Hanoi, Vietnam
4 GeoPro Ltd, Hanoi, Vietnam
Article history:
Received 1st Apr 2023
Revised 23rd July 2023
Accepted 17th Aug 2023
Along with cartography science and technology development, data acquisition through aeronautical laser scanning systems has been developing This is an essential and detailed data source for database construction, mapping, and city 3D modeling, City 3D modeling requires processing many types of data, at which point cloud data processing and classification play an essential role in creating input data sources for the model However, the processing and classification of point cloud data mainly depend on commercial software with very high costs; moreover, the algorithms and parameters of commercial software are locked That makes it impossible for the user to intervene to improve product accuracy Therefore, building a program to automatically classify point cloud data into different geographical objects helps us master data processing technology for creating 3D models It makes an important contribution to building and developing smart cities The article introduces the step-by-step classification of LiDAR point cloud data and the process of automatically building a program to classify point cloud data based on Visual Studio.Net language The result is a bilingual program automatically classifying point cloud data (Vietnamese - English) The program can read and fully deploy algorithms to process LiDAR point cloud data containing information with four color bands (red, green, blue, and near-infrared) The primary processing is based on proposed classification steps and thresholds for point cloud data classification into eight feature classes, including hydrology, solar land, traffic, low plants, medium plants, high plants, houses, and other objects, to establish 3D city models
Copyright © 2023 Hanoi University of Mining and Geology All rights reserved
Keywords:
3D city model,
LiDAR,
Point cloud,
Program
_
* Corresponding author
E - mail: buingocquy@humg.edu.vn
DOI: 10.46326/JMES.2023.64(4).01
Trang 22 Tạp chí Khoa học Kỹ thuật Mỏ - Địa chất Tập 64, Kỳ 4 (2023) 1 - 11
_
* Tác giả liên hệ
E - mail: buingocquy@humg.edu.vn
DOI:10.46326/JM3ES.2023.64(4).01
Xây dựng chương trình tự động phân loại dữ liệu đám mây điểm
Bùi Ngọc Quý 1,2,*, Lê Đình Hiển 3, Phạm Văn Hiệp 1,2, Vũ Sơn Tùng 4, Dương Anh Quân 1,2, Trần Thị Thu Trang 1
1 Khoa Trắc địa - Bản đồ và Quản lý đất đai, Trường Đại học Mỏ - Địa chất, Việt Nam
2 Nhóm nghiên cứu nghiên cứu phát triển công nghệ quản lý và phân tích dữ liệu không gian địa lý, Hà Nội, Việt Nam
3 Công ty TNHH MTV Tài nguyên và Môi trường Việt Nam, Hà Nội, Việt Nam
4 Công ty TNHH GeoPro, Hà Nội, Việt Nam
THÔNG TIN BÀI BÁO TÓM TẮT
Quá trình:
Nhận bài 1/4/2023
Sửa xong 23/7/2023
Chấp nhận đăng 17/8/2023
Cùng với sự phát triển trong lĩnh vực khoa học và công nghệ đo đạc bản
đồ, công tác thu nhận dữ liệu thông qua hệ thống quét laser hàng không
đã có sự phát triển mạnh mẽ Đây là nguồn dữ liệu quan trọng và chi tiết cho công tác xây dựng cơ sở dữ liệu, thành lập bản đồ, xây dựng mô hình 3D thành phố, Quá trình xây dựng mô hình 3D thành phố đòi hỏi phải xử
lý nhiều loại dữ liệu, trong đó công tác xử lý và phân loại dữ liệu đám mây điểm có vai trò quan trọng trong việc tạo nguồn dữ liệu đầu vào cho mô hình Tuy nhiên, việc xử lý và phân loại dữ liệu đám mây điểm hiện nay chủ yếu phụ thuộc vào các phần mềm thương mại có bản quyền với giá thành rất cao, hơn nữa các thuật toán và tham số của phần mềm thương mại được mã hóa làm cho người dùng không thể can thiệp để cải thiện độ chính xác của sản phẩm Do vậy, việc xây dựng một chương trình tự động phân loại dữ liệu đám mây điểm thành các đối tượng địa lý khác nhau giúp chúng ta có thể làm chủ được công nghệ xử lý dữ liệu phục vụ công tác xây dựng các mô hình 3D thành phố tiến tới góp phần quan trọng vào tiến trình xây dựng và phát triển thành phố thông minh Bài báo giới thiệu quy trình các bước thực hiện phân loại dữ liệu đám mây điểm LiDAR và quá trình triển khai xây dựng chương trình tự động phân loại dữ liệu đám mây điểm dựa trên ngôn ngữ Visual Studio.Net Kết quả bài báo đã xây dựng được chương trình tự động phân loại dữ liệu đám mây điểm song ngữ (Việt – Anh), có thể đọc và triển khai đầy đủ các thuật toán để xử lý
dữ liệu đám mây điểm LiDAR chứa thông tin 4 kênh màu (đỏ, lục, lam và cận hồng ngoại) Quá trình xử lý chính dựa theo các bước và ngưỡng phân loại đã đề xuất cho phân loại dữ liệu đám mây điểm thành 8 lớp đối tượng địa lý khác nhau bao gồm: thủy văn, mặt đất, giao thông, thực vật thấp, thực vật trung bình, thực vật cao, nhà và các đối tượng khác phục vụ cho công tác thành lập các mô hình 3D thành phố
© 2023 Trường Đại học Mỏ - Địa chất Tất cả các quyền được bảo đảm
Từ khóa:
Chương trình,
Đám mây điểm,
LiDAR,
Mô hình 3D thành phố
Trang 31 Mở đầu
Hiện nay, trên thế giới các nghiên cứu về mô
hình 3D thành phố phục vụ cho công tác mô hình
hóa bề mặt và xây dựng thành phố thông minh đã
và đang được chú trọng nghiên cứu và phát triển
Các mô hình 3D thành phố được xây dựng là kết
quả của quá trình tích hợp nhiều loại dữ liệu khác
nhau như: DEM, ảnh vệ tinh, bản đồ địa hình, ảnh
số, dữ liệu đám mây điểm LIDAR,… (Bui và nnk.,
2020; 2021; Dương và nnk., 2202; Lê, 2019;
2023) Quá trình xây dựng mô hình 3D thành phố
đòi hỏi phải xử lý nhiều loại dữ liệu, trong đó công
tác xử lý và phân loại dữ liệu đám mây điểm có vai
trò quan trọng trong việc tạo nguồn dữ liệu đầu
vào cho mô hình 3D thành phố Nhiều công trình
nghiên cứu đã đưa ra các phương pháp và thuật
toán về phân loại đám mây điểm để từ đó nhận
dạng các đối tượng bằng cách phân lớp cho đám
mây điểm thu nhận được, trong đó chủ yếu tập
trung vào 2 hướng: (1) Các thuật toán dựa trên mô
hình máy học (Alexandre, 2020; Arief và nnk.,
2019; Chenglu và nnk., 2019; Qiang và nnk., 2020;
Yongguang và nnk., 2020); (2) Các thuật toán
phân loại dựa trên hình thái và phổ (Heidar và
nnk., 2020; Markus and Jing, 2014; Ronggang và
nnk., 2018; Wuzhao và nnk., 2020; Yi và nnk.,
2020; Yangbin và nnk., 2018; Xudong và nnk.,
2019)
Thực tế hiện nay, công nghệ đo đạc thu thập
dữ liệu đã dịch chuyển dần từ các thiết bị đo đạc
truyền thống, đơn lẻ từng điểm sang các thiết bị
thu thập thông tin không gian một cách toàn diện
và nhanh chóng như máy quét laser mặt đất, máy
quét laser di động (mobile mapping), thiết bị quét
LiDAR trên máy bay hay trên UAV Định dạng dữ
liệu chung cho các thiết bị này là dữ liệu dạng đám
mây điểm 3D mang thông tin chính xác về tọa độ
địa lý và nhiều thông tin khác như màu sắc, cường
độ phản xạ, xung phản hồi, Với sự xuất hiện của
dữ liệu đám mây điểm 3D, thế giới thực được thể
hiện một cách đầy đủ trực quan với đúng tỷ lệ
Hơn nữa, khối lượng dữ liệu đám mây điểm 3D
được thu thập ngày càng nhiều đã tạo điều kiện
thuận lợi cung cấp nguồn thông tin đa dạng, đầy
đủ cho phân loại và xây dựng các đối tượng nội
dung của mô hình 3D thành phố phục vụ các ứng
dụng quy hoạch, quản lý môi trường đô thị, không
gian, cảnh quan, Tuy nhiên, với khối lượng dữ
liệu lớn, việc phân loại dữ liệu đám mây điểm hiện
nay hầu hết dựa trên các công cụ của phần mềm thương mại đi kèm của các hãng sản xuất thiết bị thu thập dữ liệu mà chưa có nhiều nghiên cứu xây dựng chương trình phân loại dữ liệu đám mây điểm Hơn nữa, việc sử dụng các phần mềm thương mại đòi hỏi phải chi phí mua bản quyền lớn, các tham số và thuật toán tính toán được mã hóa làm cho người dùng không thể can thiệp để cải thiện độ chính xác của sản phẩm (Lê, 2023) Chính
vì thế, việc thiết kế và xây dựng chương trình máy tính phục vụ công tác phân loại dữ liệu đám mây điểm có ý nghĩa khoa khoa học và thực tiễn cao
2 Thiết kế tổng thể chương trình phân loại dữ liệu đám mây điểm
2.1 Phương pháp phân loại dữ liệu đám mây điểm
Dữ liệu đám mây điểm LiDar được thu nhận được với bốn dải màu: đỏ - xanh lục - xanh lam - hồng ngoại gần Dựa trên các đặc điểm của đám mây điểm, nhóm nghiên cứu đã xây dựng quy trình chi tiết các bước để phân loại tự động dữ liệu đám mây điểm thành các lớp dữ liệu chứa các đối tượng địa lý khác nhau bao gồm: lớp điểm mặt đất, lớp điểm giao thông, lớp điểm thực vật, lớp điểm nhà và các lớp điểm các đối tượng khác Đám mây điểm sau khi phân loại sẽ là dữ liệu đầu vào để thành lập mô hình 3D thành phố Quy trình chi tiết bao gồm quá trình xử lý với các thuật toán lọc dữ liệu đám mây điểm thành các lớp đối tượng địa lý khác nhau Việc phân loại dữ liệu đám mây điểm này dựa trên ngưỡng phân loại được mô tả trong Hình 1 Mức ngưỡng được phát triển dựa trên đặc điểm tự nhiên của các lớp đối tượng trong đám mây điểm cũng như cường độ phản xạ của các đối tượng địa lý được khuyến cáo từ hãng sản xuất thiết bị thu nhận dữ liệu (Bảng 1) Có bốn đặc điểm được sử dụng để phát triển mức ngưỡng đó là: cường độ, chỉ số thực vật (NDVI), chiều cao và hình học (Bui và nnk., 2021; Lê, 2023)
Bảng 1 Phạm vi cường độ của các đám mây điểm CityMapper cho các đối tượng khác nhau
TT Đối tượng Khoảng cường độ
1 Đường nhựa 2100÷5400
2 Bê tông 9000÷12500
3 Mái ngói 7300÷9700
4 Mặt đất 7500÷13600
Trang 44 Bùi Ngọc Quý và nnk./Tạp chí Khoa học Kỹ thuật Mỏ - Địa chất 64 (4), 1 - 11
Bảng 1 cho thấy rằng đường nhựa có thể
được lọc ra khỏi các vật thể mặt đất khác theo giá
trị cường độ Vì nền đất bằng phẳng trong khu vực
gồm có đường nhựa, bê tông, ngói, đất ngõ, đất
Các bước triển khai phương pháp phân loại
dữ liệu đám mây điểm cho xây dựng chương trình
tự động phân loại dữ liệu đám mây điểm được quy
trình hóa theo thứ tự triển khai thuật toán bao
gồm: (1) Lọc bỏ điểm nhiễu; (2) Phân loại điểm
mặt đất; (3) Phân loại giao thông; (4) Phân loại
thực vật; (5) Phân loại điểm mái nhà (Dương và
nnk., 2022)
2.2 Sơ đồ thiết kế hệ thống chương trình máy
tính phân loại dữ liệu đám mây điểm
Chương trình phân loại dữ liệu được thiết kế
để làm việc với dữ liệu đám mây điểm và dữ liệu
số hóa (điểm, đường, vùng) Các định dạng dữ liệu
này sẽ hiển thị trong môi trường 2D trên cửa số
chính của chương trình với các công cụ hỗ trợ
tương tác để người dùng có thể thay đổi các góc
nhìn khác nhau của các đối tượng, biên tập và
chỉnh sửa các dữ liệu trực tiếp trên chương trình
đã xây dựng Chương trình được thiết kế theo sơ
đồ thiết kế hệ thống với các nhóm chức năng và các công cụ như Hình 2, trong đó tập trung vào việc thiết kế nhóm chức năng phân loại dữ liệu đám mây điểm thành các lớp nội dung như đã đề cập trong mục 2.1
3 Xây dựng chương trình phân loại dữ liệu
đám mây điểm
3.1 Thiết kế giao diện chương trình
Chương trình được thiết kế trên nền tảng ngôn ngữ lập trình VisualBasic.Net với giao diện đơn giản dễ sử dụng, bao gồm 4 nhóm: (1) Menu bao gồm 6 mục chức năng chính: tệp, định dạng,
vẽ, góc nhìn, công cụ và trợ giúp; (2) Các công cụ chức năng: tạo mới, mở tệp, lưu, các công cụ vẽ điểm, đường, hình tròn, ghi chú…, các công cụ thay đổi góc nhìn, các công cụ phân loại đám mây điểm, công cụ lọc, hiển thị và phân loại lại; (3) Màn hình hiển thị: cho phép vẽ các đối tượng đồ họa cơ bản như dạng điểm, đường, vùng và hiển thị dữ liệu
Hình 1 Quy trình phân loại các đối tượng từ dữ
liệu đám mây điểm (Bui và nnk., 2021; Lê, 2023) Hình 2 Sơ đồ thiết kế hệ thống chương trình phân loại đám mây điểm (Lê 2023)
Trang 5đám mây điểm trên giao diện của chương
trình; (4) Thanh trạng thái phía dưới, hiển thị
thông tin về tọa độ của con trỏ (Hình 3)
3.2 Thiết kế chức năng của chương trình phân
loại dữ liệu đám mây điểm
Chương trình được thiết kế với 7 nhóm chức
năng bao gồm: (1) Nhóm chức năng quản lý tệp;
(2) Nhóm chức năng hiển thị cho phép tùy chỉnh
định dạng hiển thị của các đối tượng được số hóa
bởi phần mềm; (3) Nhóm chức năng số hóa; (4)
Nhóm chức năng điều chỉnh góc nhìn; (5) Nhóm
các công cụ bổ trợ như đo khoảng cách, công cụ đo
diện tích, công cụ tra cứu thông tin đám mây điểm;
(6) Nhóm công cụ trợ giúp giới thiệu về chương
trình và 1 số thông tin hướng dẫn, đồng thời có thể
lựa chọn chuyển đổi ngôn ngữ của chương trình
qua lại giữa tiếng Việt và tiếng Anh; (7) Nhóm
chức năng phân loại dữ liệu đám mây điểm bao
gồm các công cụ thực hiện các tính năng phân loại
đám mây điểm được thiết kế và xây dựng theo
logic các bước đã đề xuất trong mục 2.1 bao gồm
các công cụ: loại bỏ điểm nhiễu; phân loại điểm
mặt đất; phân loại điểm đường giao thông; phân
loại điểm thực vật; phân loại nhà; tái phân loại; lọc
hiển thị theo lớp
3.3 Lập trình xây dựng chương trình phân loại
dữ liệu đám mây điểm
3.3.1 Khai báo cửa sổ hiển thị dữ liệu
Chương trình được thiết kế để phân định rõ giữa hệ tọa độ thực - r và hệ tọa độ màn hình - V
Hệ tọa độ thực lưu trữ thông tin tọa độ thực của mỗi đối tượng trong khi hệ tọa độ màn hình lưu trữ giá trị tọa độ hiển thị của các đối tượng trên cửa sổ hiển thị dữ liệu Do đó, với bất kỳ đối tượng nào có trong dữ liệu đám mây điểm đầu vào, sẽ được lưu trữ thông tin dưới dạng cả 2 hệ tọa độ
Vì vậy, chương trình đã được xây dựng 6 hàm để chuyển đổi từ hệ tọa độ thực sang hệ tọa độ màn hình cho giá trị X,Y và hệ số tỷ lệ m
'Cac tham so anh xa Dim vXo, vYo As Integer Dim rXo, rYo As Double Dim m As Double
Dim rXmin, rYmin, rZmin As Double Dim rXmax, rYmax, rZmax As Double Dim rLasXmin, rLasYmin As Double Dim rLasXmax, rLasYmax As Double 'Tu man hinh sang thuc
Private Function rX(ByVal vX As Double)
As Integer Return (rXo + (vX - vXo) / m) End Function
Private Function rY(ByVal vY As Double)
As Integer Return (rYo - (vY - vYo) / m) End Function
Private Function rS(ByVal vS As Double)
As Integer Return (vS / m)
Hình 3 Giao diện chương trình (Lê, 2023)
Trang 66 Bùi Ngọc Quý và nnk./Tạp chí Khoa học Kỹ thuật Mỏ - Địa chất 64 (4), 1 - 11
End Function
'Tu thuc sang man hinh
Private Function vX(ByVal rX As Double)
As Integer
Return (vXo + m * (rX - rXo))
End Function
Private Function vY(ByVal rY As Double)
As Integer
Return (vYo - m * (rY - rYo))
End Function
Private Function vS(ByVal rS As Double)
As Integer
Return (m * rS)
End Function
Trong 6 hàm trên, có rX, rY, rS, vS là các biến
số, ứng với tọa độ thực và tọa độ màn hình của mỗi
điểm; rXo, rYo là hằng số, mặc định ban đầu có giá
trị là 0; vXo, vYo, m cũng là hằng số, được xác định
khi mở cửa sổ chương trình Mã nguồn lệnh mở
cửa sổ chương trình và xác định các hằng số vXo,
vYo, m được xác định như sau:
Private Sub FrmView_Load(ByVal sender As
Object, ByVal e As EventArgs) Handles
MyBase.Load
g = PicView.CreateGraphics
m = 1
vXo = PicView.Width / 2
vYo = PicView.Height / 2
End Sub
3.3.2 Khai báo khuôn dạng dữ liệu
Đối với lớp dữ liệu đường, polyline, hình tròn
và ghi chú chương trình chỉ lưu trữ dưới dạng 2D
do chương trình không thiết kế để hiển thị trong
môi trường 3D Với mỗi dạng đối tượng, tiến hành
khai báo một mảng dữ liệu 2D, bao gồm các giá trị
về tọa độ vị trí dưới dạng số thực, đồng thời với
một giá trị số lượng dạng số nguyên tương ứng
Đường tròn khai báo thêm giá trị bán kính, còn ghi
chú khai báo thêm giá trị nội dung ghi chú dưới
dạng string
Structure Line_2D
Dim rX1 As Double
Dim rY1 As Double
Dim rX2 As Double
Dim rY2 As Double
End Structure
Dim DS_Lines() As Line_2D, LinesCount As
Integer
Structure Circle_2D
Dim rX1 As Double
Dim rY1 As Double
Dim rR1 As Double
End Structure
CirclesCount As Integer
Đối với định dạng dữ liệu polyline, tiến hành khai báo mảng polyline bao gồm mảng các vertex
và số lượng vertex, cùng với số lượng polyline Mỗi vertex sẽ chứa thông số về tọa độ X, Y từng vertex
Structure Polyline_2D
VertexsCount As Integer End Structure
PolylinesCount As Integer
Ngoài ra, để phục vụ cho thuật toán phân loại điểm mặt đất, chương trình cần khai báo thêm mảng ô lưới (grid) và mảng tam giác (triangle) Mảng grid bên trong bao gồm các mảng con để lưu trữ các điểm trong mỗi ô lưới cùng với số lượng grid Mảng triangle lưu trữ dưới dạng ba đỉnh của tam giác và số lượng tam giác
Structure Grid_2D Dim DS_Vertexs() As Point_3D, VertexsCount As Integer
End Structure Dim DS_Grids() As Grid_2D, GridsCount As Integer
Structure Triangle Dim iD1 As Integer Dim iD2 As Integer Dim iD3 As Integer End Structure
Dim DS_Triangles() As Triangle, TrianglesCount As Integer
Đối với định dạng dữ liệu đám mây điểm, do
dữ liệu LiDAR ngoài thông tin tọa độ X, Y, Z còn bao gồm thông tin về cường độ tia quét, lớp phân loại, thông tin về bốn dải màu: đỏ, lục, lam và cận hồng ngoại, nên cấu trúc định dạng đám mây điểm được khai báo theo mã nguồn lệnh khai báo định dạng
dữ liệu cho đám mây điểm như sau:
Structure LasPoint_3D Dim rX1 As Double Dim rY1 As Double Dim rZ1 As Double Dim classification As Integer Dim Intensity As Integer Dim Red As Integer Dim Green As Integer Dim Blue As Integer Dim NIR As Integer End Structure
Trang 73.3.3 Khai báo đọc dữ liệu
Chương trình được xây dựng để đọc được dữ
liệu đám mây điểm Dữ liệu đám mây điểm cần
được lưu trữ dưới dạng tệp văn bản, mỗi điểm
tương ứng với một dòng, bao gồm các thông tin về
tọa độ X, Y, Z, cường độ, thông tin màu sắc bao gồm
giá trị đỏ, lục, lam, cận hồng ngoại và thông tin về
phân lớp Mỗi thông tin sẽ được ngăn cách bằng ký
hiệu ngăn cách – delimeter thường là dấu cách
trống hoặc dấu phẩy Do đó, cần xây dựng một
hàm giúp nhận diện ký hiệu ngăn cách này và lưu
thông tin của từng điểm giữa mỗi ký hiệu ngăn
cách Đặt tên hàm này là SplitChain (tách chuỗi)
Function SplitChain(ByVal Text As String,
ByVal Delimeter As String, ByRef Words() As
String) As Integer
Dim n As Integer, i As Integer
i = 0
Do
i = i + 1
Text = Trim(Text)
n = InStr(Text, Delimeter)
ReDim Preserve Words(i)
If n > 0 Then
Words(i) = Mid(Text, 1, n - 1)
Text = Mid(Text, n + 1)
Else
Words(i) = Text Return i
Exit Do End If Loop End Function
Nguyên lý hàm tách chuỗi này như sau: sử dụng lệnh lặp Do - Loop, với biến i chạy Đầu tiên thực hiện cắt bỏ các khoảng trống thừa hai đầu mỗi dòng với hàm Trim(Text) Tiếp đến xác định giá trị số lượng chữ - n cho đến khi gặp ký tự ngăn cách – delimeter bằng hàm InStr Với điều kiện n >
0, hàm sẽ lần lượt lưu các giá trị giữa các ký tự ngăn cách vào mảng Word(i) bằng hàm Mid(Text,
1, n-1) Như vậy các thông số về X, Y, Z, cường độ, thông tin màu sắc sẽ được lần lượt lưu vào mảng Word(i)
3.3.4 Khai báo hiển thị dữ liệu
Dữ liệu được hiển thị dưới dạng 2D, theo góc nhìn thẳng đứng từ trên xuống Với mỗi đối tượng được vẽ, đều có lệnh Graphic.draw để vẽ các đối tượng với màu sắc mặc định là trắng trên nền đen Với dữ liệu đám mây điểm *.las, sau khi được tải vào chương trình, dữ liệu sẽ được xử lý để tự động đưa toàn bộ dữ liệu về màn hình hiển thị (Hình 4)
Hình 4 Giao diện hiển thị dữ liệu đám mây điểm (Lê, 2023)
Trang 88 Bùi Ngọc Quý và nnk./Tạp chí Khoa học Kỹ thuật Mỏ - Địa chất 64 (4), 1 - 11
4 Kết quả và thảo luận
4.1 Kết quả xây dựng chương trình phân loại
dữ liệu đám mây điểm
Với mỗi modul công cụ chức năng sau khi xây
dựng sẽ được tiến hành chạy thử với dữ liệu đám
mây điểm có số lượng từ nhỏ đến lớn để kiểm tra,
nếu có phát sinh lỗi thì sẽ tiến hành kiểm tra lỗi và
thực hiện các chỉnh sửa cần thiết Mỗi modul công
cụ sẽ được hoàn thiện sau khi chạy thử dữ liệu ở
nhiều khu vực khác nhau và loại bỏ hết các trường
hợp phát sinh lỗi Các câu lệnh cũng được biên tập
ra các chức năng riêng và bố trí một cách gọn gàng
nhất, giúp tăng cường tốc độ xử lý dữ liệu, tránh
các bước chạy đường vòng, lãng phí thời gian và
tài nguyên bộ nhớ Kết quả xây dựng chương trình
có thể hiển thị và xử lý phân loại dữ liệu đám mây
điểm để tách dữ liệu thành 8 lớp dữ liệu địa lý bao
gồm: mặt nước, mặt đất, giao thông, thực vật thấp,
thực vật trung bình, thực vật cao, nhà cửa và các
đối tượng khác
4.2 Ứng dụng chương trình trong phân loại dữ
liệu đám mây điểm
Trên cơ sở chương trình đã xây dựng nhóm
nghiên cứu tiến hành thực nghiệm phân loại dữ
liệu đám mây điểm cho khu vực phường Thượng
Lý, thành phố Hải Phòng (Hình 5) Đám mây điểm được sử dụng công cụ lọc nhiễu để lọc bỏ các điểm thấp, kết quả thu được những khu vực không có
dữ liệu và đưa về lớp thủy văn Tiếp theo, tiến hành lựa chọn công cụ lọc mặt đất và thiết lập các tham số cho thuật toán lọc mặt đất bao gồm kích thước của ô lưới; khoảng cách và góc lặp lần 1; độ biến thiên của dữ liệu; khoảng cách và góc lặp lần
2 (Hình 6) Khi đó, chương trình sẽ căn cứ vào kích thước của ô lưới được lựa chọn để xác định các điểm hạt giống là các điểm thấp nhất trong các ô lưới và tiến hành tam giác hóa bề mặt để tạo mô hình TIN Dựa trên bề mặt TIN này chương trình tiến hành áp dụng các điều kiện về khoảng cách và góc lặp để xác định điểm mặt đất, cụ thể điểm được xét là điểm nằm trong tam giác đồng thời thỏa mãn điều kiện nhỏ hơn giá trị tham số của khoảng cách và góc lặp mà người dùng đã thiết lập Khi đó, điểm này sẽ được tính là điểm mặt đất, chương trình sẽ xóa bỏ tam giác chứa nó và sử dụng điểm này để lập 3 tam giác giữa điểm đó và
3 cạnh của tam giác ban đầu Sau khi vòng lặp 1 kết thúc chương trình sẽ tiến hành tương tự cho vòng lặp thứ 2 với các tham số đã được người dùng xác định với điểm khởi tính ban đầu là các điểm mặt đất của vòng lặp thứ nhất với giá trị góc lặp lớn hơn và khoảng cách lặp nhỏ hơn lần 1 để xác định các điểm mặt đất ở những khu vực địa hình có độ
Hình 5 Vị trí khu vực phường Thượng Lý, thành phố Hải Phòng
Trang 9dốc lớn cũng như tránh cho bước nhảy lớn
vào bề mặt của các đối tượng khác (Dương và nnk.,
2022) Kết quả cuối cùng sẽ tách được lớp điểm
mặt đất ra khỏi dữ liệu đám mây điểm gốc ban đầu
(Hình 7) Sau khi phân loại xong các điểm mặt đất,
tiến hành phân loại lớp đường giao thông dựa trên
dữ liệu các điểm mặt đất đã được tách ra từ quá
trình lọc mặt đất Chương trình sẽ dựa trên tham
số về giá trị cường độ mà người dùng nhập vào
(Hình 8) để lọc ra các điểm đường giao thông Kết
quả của quá trình này sẽ tách được lớp mặt đất và
lớp đường giao thông (Hình 9)
Sau khi lọc các đối tượng giao thông, tiến
hành lọc các đối tượng thực vật Thực vật được lọc
ra thành 3 lớp (thấp, trung bình và cao) dựa trên
giá trị NDVI kết hợp với độ cao của điểm so với bề
mặt TIN được tạo ra từ kết quả phân loại điểm mặt
đất Kết quả của quá trình này sẽ thu được 4 lớp
thực vật thấp, thực vật trung bình, thực vật cao và các đối tượng khác Cuối cùng chương trình tiến hành triển khai thuật toán để phân loại lớp nhà trên cơ sở dữ liệu các đối tượng khác vừa được tách ra từ quá trình phân loại thực vật dựa vào đặc điểm dữ liệu lúc này đó là các điểm nằm trên một mặt phẳng đảm bảo thỏa mãn góc dốc so với bề mặt đất một giá trị được xác định của người dùng
sẽ được đưa về lớp nhà Kết quả sẽ thu nhận được lớp nhà (Hình 10) và các đối tượng địa lý còn lại sẽ được đưa vào lớp các đối tượng khác
Hình 6 Xác định các tham số cho công cụ lọc
điểm mặt đất
Hình 7 Kết quả phân loại lớp mặt đất (Dương và
nnk., 2022)
Hình 8 Xác định tham số cho lọc đường giao thông
Hình 9 Lớp giao thông được tách ra từ lớp điểm mặt đất dựa trên giá trị cường độ (Dương và nkk., 2022)
Hình 10 Kết quả phân loại lớp điểm mái nhà (Dương
và nkk., 2022)
Trang 1010 Bùi Ngọc Quý và nnk./Tạp chí Khoa học Kỹ thuật Mỏ - Địa chất 64 (4), 1 - 11
5 Kết luận
Bài báo đã tiến hành xây dựng và hiện thực
hóa các bước triển khai phân loại dữ liệu đám mây
điểm trên cơ sở thuật toán và ngưỡng phân loại
được đề xuất bởi nhóm tác giả trong nghiên cứu
của (Bùi và nnk., 2021; Lê, 2023) Kết quả xây
dựng chương trình phân loại dữ liệu đám mây
điểm của bài báo cho thấy chúng ta hoàn toàn có
thể chủ động công tác thiết kế và xây dựng các
chương trình máy tính hỗ trợ cho phân loại dữ liệu
đám mây điểm độc lập mà không quá phụ thuộc
vào các phần mềm thương mại như hiện nay
Chương trình phân loại dữ liệu đám mây
điểm đã xây dựng đảm bảo đọc được dữ liệu đám
mây điểm có chứa thông tin 4 kênh màu bao gồm
đỏ, lục, lam và cận hồng ngoại và có thể triển khai
đầy đủ các thuật toán phân loại dữ liệu đám mây
điểm theo quy trình các bước đã đề xuất và có thể
phân loại dữ liệu đám mây điểm thành các đối
tượng địa lý riêng biệt bao gồm: thủy văn, mặt đất,
giao thông, thực vật thấp, thực vật trung bình, thực
vật cao, nhà và các đối tượng khác Chương trình
có giao diện đơn giản, dễ nhìn, dễ sử dụng với 2
ngôn ngữ tiếng Việt và tiếng Anh Đặc biệt, chương
trình có thể lựa chọn các tham số cho từng đối
tượng trong quá trình phân loại để phù hợp với
từng nhóm đối tượng địa lý trong những điều kiện
địa lý khác nhau giúp cho kết quả phân loại đảm
bảo sát với thực tế nhất
Với chương trình máy tính đã xây dựng,
người dùng có thể đọc, hiển thị và tiến hành phân
loại đám mây điểm ra nhiều các phân lớp khác
nhau một cách tự động nhằm cung cấp dữ liệu đầu
vào cho xây dựng các mô hình 3D thành phố
Ngoài ra, chương trình cũng cho phép số hóa các
đối tượng đồ họa dạng điểm, đường, vùng hỗ trợ
công tác đánh dấu các đối tượng khi cần thiết, đây
cũng là một sự kết hợp cần thiết mà ít các phần
mềm thương mại hiện nay quan tâm xây dựng
Đóng góp của tác giả
Bùi Ngọc Quý - lên ý tưởng thiết kế, viết phần
phương pháp và hoàn thiện bản thảo; Lê Đình
Hiển - lập trình xây dựng chương trình; Dương
Anh Quân - đánh giá các kết quả thực nghiệm và
biên tập bản thảo; Phạm Văn Hiệp - chạy thử
nghiệm và kiểm tra dữ liệu sau phân loại; Vũ Sơn
Tùng - lọc dữ liệu, bắt lỗi chương trình; Trần Thị
Thu Trang – thu thập dữ liệu đám mây điểm thực nghiệm, biên tập và rà soát bản thảo
Tài liệu tham khảo
Alexandre Boulch (2020) ConvPoint: Continuous Convolutions for Point Cloud Processing
Computers and Graphics, 88, 24-34
doi.org/10.1016/j.cag.2020.02.005
Arief, H A A., Indahl, U G., Strand, G H., & Tveite,
H (2019) Addressing overfitting on point
cloud classification using Atrous XCRF ISPRS
Journal of Photogrammetry and Remote
doi.org/10.1016/j.isprsjprs.2019.07.002 Bui, N Q., Le, D H., Duong, A Q., Nguyen Q L (2021) Rule-based classification of Airborne Laser Scanner data for automatic extraction of
3D objects in the urban area Journal of the
Polish Mineral Engineering Society, 48(2),
103-114 DOI: doi.org/10.29227/IM-2021-02-09 Bui, N Q., Le, Di H., Nguyen, Q L., Tong, S S., Duong, A Q., Pham, V H., Phan, T H., Pham, T
L (2020) Method of defining the parameters for UAV point cloud classification algorithm
Journal of the Polish Mineral Engineering Society, 46(1) 49-56 DOI: doi.org/10
29227/IM-2020-02-08
Chenglu Wen, Xiaotian Sun, Jonathan Li, Cheng Wang, Yan Guo, Ayman Habib (2019) A Deep Learning Framework for Road Marking Extraction, Classification and Completion from
Mobile Laser Scanning Point Clouds ISPRS
Journal of Photogrammetry and Remote
doi.org/10.1016/j.isprsjprs.2018.10.007 Dương, A Q., Lê, Đ H., Phạm, V H., Nguyễn, Q C., Bùi, N Q (2022) Xây dựng quy trình thu nhận,
xử lý và phân loại dữ liệu đám mây điểm LiDAR
phục vụ thành lập mô hình 3D thành phố Tạp
chí Khoa học Kỹ thuật Mỏ - Địa chất, 63(4),
1-12 doi:10.46326/JMES.2022.63(4).01 Heidar Rastiveis, Alireza Shams, Wayne A Sarasua, Jonathan Li (2020) Automated Extraction of Lane Markings from Mobile LiDAR Point Clouds Based on Fuzzy Inference
ISPRS Journal of Photogrammetry and Remote