Câu trả lời:
Các hoạt động hình thái Mở rộng và Thu hẹp đã được tạo ra cho loại xử lý này. Sử dụng ArcGIS (hoặc GRASS hoặc Mathicala ) vì R
thư viện "raster" của quá chậm.
Thông thường, nó giúp thử nghiệm một chút với các tham số: bạn phải quyết định cần mở rộng và thu nhỏ bao nhiêu để làm sạch hình ảnh; và thông thường bạn muốn làm ít nhất có thể, bởi vì mỗi thao tác có xu hướng làm mịn một số chi tiết sắc nét. Đây là một chuỗi hoạt động tốt để loại bỏ phần lớn "nhiễu" rõ ràng trong khi vẫn duy trì hầu hết các chi tiết trong "thực thể". "Mở rộng" và "thu nhỏ" đều có liên quan đến các tế bào trắng , do đó, việc mở rộng khiến chúng phát triển ra bên ngoài và co lại làm cho các tế bào đen xâm lấn vào các vùng trắng.
Cột "khác biệt" sử dụng màu sắc để làm nổi bật sự khác biệt giữa hình ảnh bắt đầu và kết thúc ở mỗi bước: màu xanh lam cho màu đen chuyển sang màu trắng và màu cam cho màu trắng chuyển sang màu đen.
Nếu các phần còn lại lớn hơn cần được loại bỏ, điều đó có thể được thực hiện tốt nhất với Regiongroup để xác định chúng, sau đó chúng có thể được xóa sạch thông qua phân loại lại. Đây là một tùy chọn ngay từ đầu, nhưng một chút làm sạch ban đầu với Expand
và Shrink
làm giảm công việc và cung cấp độ mịn mong muốn.
Ngẫu nhiên, tôi đã chọn để làm cho số tám hình ảnh trong hình minh họa này với Mathematica lệnh vì họ là như vậy đơn giản, dễ dàng và nhanh chóng để thực hiện:
i = Import["http://i.stack.imgur.com/umDg7.png"];
l = Dilation[k = Erosion[j = Dilation[i, 2], 3], 1]; (* This does all the work *)
delta = ColorCombine /@ {{i, j}, {j, k}, {k, l}, {i, l}}; (* Compares images *)
Quy trình làm việc trong ArcGIS là như nhau nhưng cú pháp sẽ dài hơn. Nếu bạn thực sự muốn sử dụng R
, hãy tải thư viện "raster" và khai thác focalFilter
để tạo các hàm để thực hiện việc mở rộng và thu hẹp. Sau đó chờ khoảng một phút để thực hiện các thao tác ....
Sử dụng tiện ích mở rộng phân tích không gian, bạn có thể sử dụng một số công cụ Tổng quát hóa . Một số trong số chúng thực hiện các nhiệm vụ tương tự, vì vậy bạn có thể cần phải chơi xung quanh với một vài người để có được kết quả như bạn muốn. Nhưng, tôi sẽ xem xét công cụ Bộ lọc Đa số và công cụ Boundary Clean .
Đây là một trang về các khái niệm của hai công cụ này.
Tôi không chắc chắn cách thực hiện các tác vụ này trong R, nhưng đây là bài viết về cách thực hiện Bộ lọc Đa số bằng GRASS GIS.
Về cơ bản, đây là một biến thể cho câu trả lời của @ whuber và sử dụng Khoảng cách Euclidian để mở rộng và thu hẹp ranh giới raster để làm phẳng các góc nhọn của raster, được thể hiện bằng quy trình thu nhỏ mở rộng, sử dụng số lượng tế bào để tăng / lấn. Mặc dù Khoảng cách Euclidian bắt chước Mở rộng, không thể đưa ra giá trị âm để lấn chiếm / thu hẹp. Bí quyết là phát triển một quy trình lặp để lấy tiêu cực của raster Euclidian Khoảng cách và phát triển nó. Dưới đây là các bước cho hình ảnh mẫu đã cho và ảnh chụp nhanh để làm rõ.
Phân loại lại raster để chỉ giữ 1s (ô trắng)
Áp dụng khoảng cách eidianidian cho khoảng cách hai ô (trong trường hợp này là 60 mét) cho raster được phân loại lại
Lấy tiêu cực của raster mở rộng bằng cách sử dụng Reclassify (các ô có giá trị sẽ nhận được NODATA và NODATA sẽ được chuyển thành 1) hoặc các toán tử Con và IsNull của Raster Calculator
Áp dụng Khoảng cách Euclidian một lần nữa cho raster âm này với cùng khoảng cách (60 m)
Lấy tiêu cực của điều này bằng cách làm theo quy trình tương tự được đưa ra ở trên
Sử dụng Máy tính raster hoặc Phân loại lại để gán các ô NODATA thành 0 trong raster này để trở về giá trị ban đầu của raster mẫu
Mở rộng Shrink so với Euclidian Khoảng cách
Lưu ý: Màu xanh lá cây hiển thị các ô được xử lý (các ô màu trắng trong câu hỏi)
Ưu điểm của Khoảng cách Euclidian là, nó lấy khoảng cách thích hợp từ mỗi tế bào thông qua các mức độ cạnh huyền làm mịn các cạnh sắc nét khác. Mặt khác, số lượng tham số ô của các công cụ mở rộng và thu nhỏ xử lý cùng một số ô cho tất cả các hướng, tạo ra các cạnh giống như hộp giới hạn, do đó tổng quát quá mức các cạnh / góc.
Tuy nhiên, vấn đề chính là nó không loại bỏ tiếng ồn thành công như mở rộng / thu nhỏ và nó dài hơn một chút so với câu trả lời.