Detection of Rust and its Annotation

Visual inspection of industrial environments is a common requirement across heavy industries. Many of these industries deal with huge metal surfaces and harsh environments. A common problem across these industries is metal corrosion and rust. I have a use case where I need to identify Rust/Metal Corrosion on a 3D model and need to annotate it on Cesium Ion Viewer.

Does anyone know what I can use to identify Rust/Metal Corrosion on the model and how can it be annotated in 3D viewer of Cesium?

Hi,
Are you looking to visually highlight areas of rust that have already been marked, or analyze the 3d model to determine the location of rust based on the appearance?

If there is already metadata about the rust locations in the 3D model you can look at using 3D Tiles Styles to highlight areas of the model.

Otherwise it will help us provide a better answer if you can provide us some more context about your use case:

  • What do you mean by annotate? (snapshot of the view, draw line or regions on the model, add text. or a combination of these) What happens with these annotations after the viewer has made them?
  • Do you have have an algorithm that is able to identify rust based on a 2d or 3d image already, or is this part of the solution you are looking for.
  • What was the source of the data in the 3D model (LIDAR, photogrammetry, etc)?

We aim to integrate .OBJ or .SLPK files into CesiumJS and wish to overlay annotations related to rust or corrosion on the model, if Cesium supports such functionalities.

Are you looking to visually highlight areas of rust that have already been marked, or analyze the 3d model to determine the location of rust based on the appearance?

Yes, our goal is to analyze the 3D model and identify the locations of rust or corrosion based on their visual appearance within the model.

  • What do you mean by annotate? (snapshot of the view, draw line or regions on the model, add text. or a combination of these) What happens with these annotations after the viewer has made them?

We aim to highlight regions on the model within the viewer, indicating rust or corrosion areas—potentially using distinct colors or drawing lines/squares to emphasize these areas. These annotations are purely for viewing purposes and do not trigger any subsequent actions. There may be future considerations for correlating these annotations with their corresponding 2D images.

  • Do you have have an algorithm that is able to identify rust based on a 2d or 3d image already, or is this part of the solution you are looking for.

Identifying rust within the 3D model is a component of the solution we are actively exploring. We are in the process of determining how to identify rust on a 3D model. Regarding metadata, as you mentioned earlier, we are seeking guidance on how to obtain and utilize it. Any available resources on this topic would be highly beneficial.

  • What was the source of the data in the 3D model (LIDAR, photogrammetry, etc)?

The data within the 3D model is derived from photogrammetry applied to LiDAR photos or drone photos.

If you already have the locations of the rust, you can use the classification feature of Cesium JS to visually highlight the rust. If each point is already tagged with an attribute that identifies rust, you can use 3D Tile Styles to control how those points are displayed.

Cesium also supports a wide variety of geometry and styles that you can add to show the area of the rust if you already have gathered that data. These can be non-interactive, or you can choose to add interactivity to them.

Typically the metadata about the points is included at the time the point cloud is created, or added by a third party program prior to uploading it to Cesium ion. However editing the metadata associated with 3D Tiles is a feature other users have asked about. Can you provide an

  • Would you expect a person to manually update the areas via a user interface, have a program do it via an API, or both of these?
  • What type of data would you be interested in storing? Just a simple boolean or a number that represents the amount of rust?

Hi Mark,

Could you confirm the feasibility of this? How can we detect rust following the processing of the point cloud? Furthermore, once identified, is it possible to add annotations directly onto the point cloud?

If you already have the locations of the rust, you can use the classification feature of Cesium JS to visually highlight the rust. If each point is already tagged with an attribute that identifies rust, you can use 3D Tile Styles to control how those points are displayed.

Concerning your earlier text, do you have insights on how any of the mentioned objectives can be accomplished? Specifically, how can a compatible metadata be effectively generated and integrated into Cesium JS?

Additionally, regarding the link I accessed, which demonstrates the use of 3D Tile Styles to control point display, I observed that the point cloud appeared to be elevated above the ground level on the globe. Is there a method to position it just above the ground level? In my attempts to upload some randomly selected point clouds, despite their georeferencing, they did not align correctly. Situated either significantly above the ground level or deeply embedded within the ground, this complicates the process of automatically aligning the point cloud with the ground while automating uploads using CesiumIon JS API.

  • Would you expect a person to manually update the areas via a user interface, have a program do it via an API, or both of these?

We are thinking of doing this via some kind of API.

  • What type of data would you be interested in storing? Just a simple boolean or a number that represents the amount of rust?

Not sure about this.