Clean Edge Selectiontool

I noticed during scanning that when you scan an object from multiple sides, i.e., make several scans and then merge them at the end, it results in unclean transitions. You can see it here in the picture:

So, I conducted a test and trimmed the outer edges in the individual scans. These were quite noisy because the light or the camera of the scanner is very weak there.


The result is convincing! And I believe that if you always do this, even normal scans will benefit from it. It’s better to cut off some noise and later add it back using the hole-filling function, rather than creating a mesh with a noisy point cloud.

Here is the result:

Therefore, I have a request or a suggestion: Create a function in the menu that allows you to select the outer edge of a point cloud with one click. There should also be an option to set how much the edge should be moved inward by a percentage. Then, once everything is selected, you can create a clean edge with the delete key and produce even better scans!

I have also made an POC script here, here’s the result in 2D:

Heres the Code for that, i may help your coders to understand, the math behind can be readed in the SciPy Docs wich Release them to http://www.qhull.org/

from scipy.interpolate import splprep, splev
from scipy.spatial import ConvexHull
import matplotlib.pyplot as plt

# Options for Revoscan User
move_inner_percent = 5

# Example Pointcloud
np.random.seed(0)
points = np.random.rand(30, 2) * 2 - 1 

# Find outer contour (Convex Hull)
hull = ConvexHull(points)
hull_points = points[hull.vertices]

# Move 5% to inner
move_factor = 1 - move_inner_percent / 100
hull_center = np.mean(hull_points, axis=0)
hull_points_shifted = hull_center + move_factor * (hull_points - hull_center)

# Plot
plt.figure(figsize=(10, 5))
plt.plot(points[:,0], points[:,1], "o", label="Pointcloud")
plt.plot(hull_points[:,0], hull_points[:,1], "r--", label="Original Contour")
plt.plot(hull_points_shifted[:,0], hull_points_shifted[:,1], "g--", label="New Contour")
plt.legend()
plt.title("Poincloud with Contours")
plt.show()
5 Likes

You should clean cut all the edges before merging it , removing all lose point and overlapping points .
The edges have slightly different accuracy due to scanning angles and need to be eliminated .

That the reason you get messy results …
Script is good but proper workflow is also important .

The merging function also have a bug , as it should clean all extra overlapped points while merging and it do not perform the way it should on top of it , so cleaning after merging is nesesery to get rid of it as well .

1 Like

I absolutely agree, Cath, still I didn’t see this advice or instruction on merging nowhwere, but I might have overlooked it, too. If not, until such a great function like @SphaeroX suggests gets implemented it would be great to include it on some official Revopoint tutorial on youtube regarding “tipps and tricks for great results”.:slightly_smiling_face:

1 Like

Hi Ivan , I made tutorial for Revo Studio how to prepare scans for merging a time ago .

I talked about many times since then , if the merge bug get fixed there is not really needs in additional scripts if the models are prepared the proper way , the issue with the edges is also a bug so a temporary situation .

It will be easier to fix the bug in place of keep the bug and working on another solution instead .

It is already there , it just need to be fixed .
One bug is in the capturing algorithms and another under the merging function .

I am pretty aware of it for some time and dev.team already working on the fixations

1 Like

Hi! as they are meanwhile plenty of revopoint tutorials, could you pleasw link to that specific video? Otherwise I would regret having missed one of your precious lections :slightly_smiling_face: TIA!:pray:

Go to my YT channel , we don’t post old software videos in the forum anymore as it confuse users , only RS5 from now on , so I guess I need to make new one reflecting the last software .

The second video after Range

1 Like

cool, thanks, I wasn’t sure where I should look for it , on your channel or revopoint’s :pray:

1 Like

Is there a recent version that doesn’t have these bugs? I think you mentioned it was a regression of sorts.

Recent ? not really … it is back and forth and I really don’t remember the exact version. However it has to be fixed ASAP

1 Like

I’ve observed this same thing, and I also thought that trimming the borders would be a great way of fixing it. I feel like in previous versions this edge noise didn’t happen, or it was greatly removed when passing the isolation filter.

However, lately, I feel like the scans are noisier. It must be because of what PUTV has shared. I hope they fix it soon!

@Revopoint-Jane is there any News about that bug?

Not in this version , the today’s version fixing MIRACO connectivity only .

We probably need to wait for the big update for all the major bugs .

The edge issues is an algorithms issue .

2 Likes

Hi @SphaeroX

We are working hard to improve this issue. Thank you for your patience!

1 Like

Sounds good :blush: thank you so much

This problem of scars along the edges of multiple scans aligned together, it plagues other scanners too. It comes from two things: not enough frames that overlap at the edge areas to filter out noise and because of the two separate scans have different (small) distortion in them. This distortion comes from volumetric accuracy capability that the scanner has. This small distortion cause an overlap between the two scans. There are multiple ways to combat this, but most are only symptomatic treatments, not a cure.
My old HP scanner does have a “shrink scan border” button, which does take off a couple of points along all the edges of the frames.
Einscan scanners simply have better volumetric accuracy so this issue is not that apparent and you can cut off the areas that do cause a scar manually.
Best example of solving this issue, and I stressed this to revopoint for a long time already: Global registration. Artec software works like this. Instead of handling a single scan with all its individual frames as a “scan” as it is, with their frames having fixed position within the particular “scan”, you could handle a “scan” as a group of frames, and the next scan as another group of frames. You can align the two groups together before fusing and run the global algnment algorythm (fusion) to take effect on all the individual frames, regardless of which group they are in. (as if they were all in one single group). All the frames will try to best algin to the next closest one, as if it was actually a single scan. This method would greatly improve the volumetric accuracy of the revo scanners and also make it possible for the current algorythms to filter out the edge noise / scarring, because the two separate groups would have enough overlapping frames to filter out noise.

2 Likes

The truth is that the merging algorithms are broken , it was already working just fine , but then for some reason the old algorithms was used again . A proper merge algorithms clean up the scan after merging not leaving up scars , lose points or overlapped points . And it was fixed once in December , it since the team is working on multiple versions at the same time , the old bug was already moved up in higher version and never cleaned up for that reason it was released back .

Regarding bad edge , the only one solution to it now is to over scan extra area when scanning or complete the scanned edge , not complete edges will have not enough data and should be cut before Merge, it was like that since first Revo Studio , you should always trim the edges before merging and leave only the needed overlapped parts anyway .

Seams are still there:

I know , it is not yet addressed probably.

I’ve discovered that Meshmixer has this feature, you double click on an edge of a model and it’ll select the whole brim. You can control the depth penetration with the sidebar settings. After cleaning your scans you can reimport them back into Revoscan or any other software for stitching.

Hi! Sorry to ask, but are you sure it is meshmixer, as it doesn’t let me select edge the way you described. double click selects the whole model. could you maybe make a short video doing it? :sweat_smile: this would be greatly appreciated!