Photogrammetry's Best, Least Used Tool (part one)

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
coded targets are one of if not the best least used tool available to someone doing photogrammetry my main goal when it comes to photogrammetry is variable reduction by reducing variables we can achieve levels of automation that are typically only found in more enterprise solutions the more variables you have the less you can automate some examples of variables may be the scale of the object or the rotation of the object relative to the world that it sits in for example you don't want to scan a building and have that building end up at a 90 degree slant or a 102 degree slant by using coated targets we can get rid of any uncertainty when it comes to the scale rotation or even orientation of that object further variables that you could reduce could be things such as the size of the intended scan area you could place down coded targets intended to be defining the outer borders of a bounding box to be used for reconstruction by using coded targets and scale bars at capture time we can reduce the number of overall variables contained within our scene significantly so in this two-part video series i'm hoping to teach you everything you need to know about coded targets scale bars and how these simple tools can help you automate quality check and structure your data sets in the most effective way possible so let's jump into part one what are coded targets and scale bars so to begin this first we're going to need to understand the tool that we're going to be using to scale our photogrammetry alignment and that is the coded target this is going to be a very simplified explanation however i hope it conveys at least the basics behind what it is and why we use them so a coded target is a black and white pattern it's visually similar to a qr code in most cases there are different target types and we'll briefly cover that later so coded markers come in two main varieties that we use for photogrammetry now for the sake of simplicity i'm going to be talking exclusively about april tags later however circular coded targets exist they are used primarily in a lot of commercial applications and they've got a lot of legacy with applications like adisoft metashape however these days i find it best to use april tags that are supported by almost everything and the april tag system or ecosystem behind it is available on a bsd license so you can use it commercially anyway let's get on to it so there are three key features with april tags that you should know about so this largely applies also to circular targets however there are some differences first of all the target family so a target family is all targets of a given type these are made using an algorithm to generate now to detect these targets we need to define what target family we are detecting so you can only really use one target family within a data set unless you're wanting to re-run the target detection tool over and over again for every other target family that is contained within your data sets so the april tag has an known center point this is defined by the outer four corners of the black square and then finding the intersection point between those four corners coded targets are defined by the data that is contained within each one and a family is defined by the bit depth of the target as well as the hamming distance for april tags this data is stored as alternating black and white checkers within the overall black square that defines the target's shape so first up we have the bit depth this is defining how much data can be stored within each target in the case of the 16h5 family we have 16 bits of data in the case of the 36h11 family we have 36 bits of data 16 bits of data can contain roughly 65 000 unique ids 36 bits of data can contain 68 billion unique ids so we've got a lot of potential data within each tag however we need to make these tags truly unique and that's where the hamming distance comes in so that's the last part of that name so i'm not going to go very in depth here i'll link the wikipedia article below but for the context of this video we're exclusively looking at how hamming distance is applied to the targets and nothing else so the hamming distance in this case is the process of taking our ridiculously large number of unique ids and culling them down to a point where they're visually unique because computationally unique or unique within a string of zeros and ones is not the same as being unique on paper and since we are visually looking at these targets using the camera we need to make sure that there is no way one target can be identified as another target and hamming distance allows us to do that to a very high degree of accuracy where no target can be assumed to be another target and false positive prevention is critical to getting good scale and good data if we've got false positives and we don't know about them then we've got a problem on our hands so let's look at it this way if we've got the hamming distance of one changing a single point on an april tag will make that tag invalid however if we were to change two particular points so say turning one square to black and another square to white would be valid so that's now a unique tag in the context of hamming distance 1. now if we bump that up to hamming distance of 5 that will mean that there has to be 5 unique changes before a target is valid and this hamming distance this process has to be applied across every single unique id contained within a target now with a hamming distance of five sure that does reduce the number of potential targets however what happens if we rotate a target then that is now considered unique but we don't want a unique target that's rotated so any 90 degree rotation of each target is also culled from our family this also includes mirroring of targets both vertically and horizontally now if we look at the 16h5 family we'll see that out of those 65 000 potential tags that we've got now we've only got 30 valid tags within the entire family if we look at the 36h11 family of tags we've reduced that number from 68 billion down to just 587. that's a very large reduction but that also means that those 587 targets are truly unique within the context of our april tag family now if you look at both of these tag families the 16 h5 and the 36h11 we can see that in comparison the 16h5 isn't very unique whereas the 36h11 tag family will be far more reliable they'll be far less likely chance of having false positive detection let's just discuss false positive because where a 36 h11 tag might have denser target point we'll find that the 16 h5 tag family might produce a lot more false positives in the context of noisy surfaces because since there is far fewer unique points within each tag the chance of those unique points forming in nature say on a noisy rock it's far greater that fine noise that sharp fine noise within each image can be detected as a target and we don't want that so i tend to always go with a vastly higher hamming distance and bit depth tag than would theoretically be necessary for the most cases so as we can see coded targets can be detected and placed within our photogrammetry alignment with relative fees but that doesn't help us with scale position orientation rotation the next step is to utilize a process called ground control points i'm not going to explain the naming behind that it's got a lot of legacy to it which you can find on wikipedia as well the gist of it is it's the process of assigning a 3d coordinate to an unconstrained point within space let's break it down and i'll show you how you can control a alignment or a scene using these ground control points assuming we've placed a target within the scene and you've gotten a good capture of that so you've got that point if we were to assign that point 3d coordinate as an example x 0 y 0 z 0 then this point would be exactly at that point in space so in this case it'll be the origin of our 3d space zero zero zero however but that does not help us with scale rotation or orientation within our 3d space there is only a single known point now if we were to add a second control point to our scene a second target that we know the coordinates of and we place that within our scene we get this we get two points a known distance away from each other we can assign the second point a new coordinate for instance x zero y 10 z zero and now this point is for instance this is way out of whack but this point in our example is 10 centimeters away from our zero zero zero point that means that we've now constrained our scene so that these two points are exactly 10 centimeters apart we've also constrained it to the zero zero zero point of our world and we can now point it we can scale it but we cannot control the rotation along our last unconstrained axis to do this we need to add in a third point we've got our original point zero zero zero we've got our second point and this one is at y ten and our last one here we'll call it x five we've now got three points constraining our scene down to an exact number this means that we've got scale defined we've got our orientation defined and then we've also got our rotation defined because with this third point we cannot rotate on this axis we are completely locked down now this is the power of these ground control points so let's look at practical examples of a scale bar in a production setting as you can see here we've got a prop rigged up and it's on a turntable so this platform you probably can't see it because it's black on black but this turntable has a small platform and onto it we've got a little clamp that is holding a scale bar now this scope is a little bit different than what we described previously this one has an offset so what that means is the center point is no longer in the middle of this marker here this corner marker it's in fact five centimeters offset so that means that if we scan an object using the scale bar and offset the scale bar physically from the center of rotation on our turntable by five centimeters any object we scan using the scale bar will be placed in the center of our world which adds a huge benefit when it comes to automation and just if you're automatically re-topologizing your objects this helps massively because you no longer have to assume you need to translate an object from an arbitrary location into the middle of your world it's now already there now as you can see since the scale bar is unique and that it's got an offset this also means that the coded targets that exist on the scale bar are also unique these aren't seen in any of my other scale bars and that's the magic of having so many possible targets available to you you can build unique scale bars for individual applications and with you know busy studio workflows sometimes that's really important it also means that if you damage a scale bar you can throw it away and not have to worry about those particular targets cropping up again and causing issues because those targets don't exist anymore physically and that means that also when we detect these scale bars we don't have to worry about detecting markers that don't exist anymore so now let's talk about detecting these coded targets in software so how do we use these points every photogrammetry package has different workflows zephyr meta shape and reality capture all do things differently so i'll be a little vague here as this video is long enough as is but in essence you select the target family that you use within your data set and run the auto detection tool which should spit out all found targets as control points it's best to set a minimum number of detected targets that qualify for control point placement as this will help prevent false positives so in conclusion coded targets add known data points within a data set that can be easily found and used later so furthermore these coded targets are very open in their creative potential there is no immediate barrier to stop you from either developing a tool which uses this data further or even just creatively uses the data within your photogrametry package of choice and the use of coded targets for scale and transformation and rotation control with the use of scale bars is incredible they're very easy and efficient to use both at capture time and when you're back in the studio so i should probably end it here this video has gone on long enough i did not expect it to be this long seriously i planned for eight minutes and here we are probably 15 minutes later now i've got a part two coming soon uh if you're watching this in the future you can find it immediately but for now you can like this video and subscribe i'm hoping to release a lot more content in the future i've had a few personal issues over the past two years which have very much hindered my ability to make these videos so yeah i've i've got a lot of videos planned i've got a lot of scripts written this one was actually meant to be filmed and released in i think mid-2020 but that has been delayed significantly but yeah thank you very much for watching
Info
Channel: Erik Christensen
Views: 17,918
Rating: undefined out of 5
Keywords: 3D scanning, photogrammetry, asset capture, models, 3d, art, scanning
Id: rh6xZ5sb31M
Channel Id: undefined
Length: 16min 32sec (992 seconds)
Published: Wed Apr 13 2022
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.