CHƢƠNG 3 XỮ LÝ ẢNH NỨT TRÊN BỀ MẶT BÊ TÔNG
3.5 Đo đạc vết nứt
3.5.1 Đo chiều dài vết nứt
Sau quá trình lọc nhiễu, ta đƣợc ảnh nhị phân chứa vết nứt nhƣ ở Hình 3.11. Ý tƣởng cơ bản để đo chiều dài vết nứt là mảnh hóa vết nứt thành một đƣờng khung có độ dày là 1 pixel. Khi đó chiều dài vết nứt chính là tổng số pixel có giá trị “1” trên đƣờng khung đó.
Hình 3.11: Ảnh nhị phân của vùng vết nứt
Để có thể xác định đƣợc đƣờng khung của vết nứt, ta sẽ co dần các Pixel ở hai vùng biên vết nứt cho đến khi có đƣợc đƣờng khung có độ dày là 1 pixel. Điều này có thể thực hiện đơn giản bằng các sử dụng hàm “bwmorph” của matlab nhƣ sau:
ske_img =bwmorph( subimage,'thin',inf); Trong đó:
- Subimage: ảnh nhị phân chứa vết nứt - Ske_img: ảnh chứa đƣờng khung vết nứt
Hình 3.12: Đƣờng khung của vết nứt
Hình 3.12 cho ta kết quả của đƣờng khung vết nứt (đƣờng màu đỏ), phần màu trắng chính là vùng nứt trên ảnh. Tuy nhiên, thuật toán của Matlab khơng thực hiện hồn tồn chính xác trong việc xác định đƣờng khung của vết nứt. Luôn tồn tại các đƣờng nhánh giả (nhƣ ví dụ ở Hình 3.13) trong đƣờng khung, vì thế ta cần phải tiến hành lọc bỏ các đƣờng này
40
Hình 3.13: Đƣờng nhánh giả
Để có thể lọc bỏ các đƣờng nhánh giả, ta chỉ cần tính khoảng cách từ điểm cuối của mỗi nhánh (End Point) đến điểm nhánh (Brand point) gần nhất. Nếu khoảng cách này bé hơn một giá trị ngƣỡng T thì ta loại bỏ nhánh đó.
Hình 3.14: Điểm Brand Point và điểm End Point
Do đặc tính các đƣờng nứt thƣờng lớn hơn 1cm, nên ta chọn ngƣỡng T dựa trên giá trị Scale đã đƣợc tính tốn ở bƣớc Calibration. Hình 3.15 cho ta kết quả sau đƣờng khung sau khi loại bỏ các đƣờng nhánh giả.
Hình 3.15: Lọc nhiễu đƣờng khung
Đƣờng
41