====== Some Tips on Improving Detection Accuracy ====== Pixy2's color filtering algorithm can process an entire frame in 16.7 ms (60 times a second). But discrimination can sometimes be a problem -- false positives and false negatives. False positives are when Pixy2 thinks an object matches a particular signature, but it's not the object you want to detect. It's often an object with a similar hue. For example, Pixy2 thinks your light green shirt matches a green ball. False negatives are when Pixy2 fails to detect an object that you intended to detect with a particular signature. Let's go through adjustments you can make to improve Pixy2's detection accuracy. ==== Signature tuning ==== Signature range tuning is probably the most effective method to improve detection accuracy. Bring up the Configure dialog (click on the gear icon or select **FileāžœConfigure**). Now select the **Tuning** tab under **Pixy Parameters** (it should be the first pane you see when you bring up the Configuration Dialog). {{wiki:v2:image_226.png|Tuning}} Use the slider for **Signature 1 range** to adjust the inclusiveness of signature 1 (assuming it's signature 1 you're wanting to adjust). Slide it to the left if you want to be less inclusive (i.e. you're seeing false positives, like the picture below): {{wiki:v2:image_219.png}} or slide it to the right if you want to be more inclusive (i.e. you're seeing false negatives) or the detection is intermittent or sparse (like in the picture below): {{wiki:v2:image_222.png}} Choose a slider value that provides good strong detection like the picture below: {{wiki:v2:image_223.png}} You can adjust all seven color signatures this way to maximize detection accuracy. Be sure to press **Apply** or **OK** to save the slider ranges! The adjusted values won't be saved if you press **Cancel** or dismiss the dialog. ==== Adjust minimum frames per second ==== Adjusting the **Min frames per second** slider in the **Camera** tab to smaller values can improve the image quality by reducing the noise and/or improving the exposure in low-light environments. The disadvantage of reducing the frames per second is that it reduces Pixy2's update rate. {{wiki:v2:image_506.png}} The two pictures below show a low-light scene and the reduction in noise by reducing the frames per second. (The left frame is higher fps, more noise.) {{wiki:v2:image_507.png?350|Higher fps, more noise}} {{wiki:v2:image_509.png?350|Lower fps, less noise}} ==== Increase block filtering ==== Pixy2 uses filtering to determine if a given block is likely to be valid or just a false positive detection. Increasing the **Block filtering** in the **Expert** tab can reduce the number of false positive detections. The cost of increasing the block filtering is longer latency when detecting new objects. That is, it will take Pixy2 longer to report detection of a new object and add it to the list of tracked objects. Once an object is added to Pixy2's list of tracked objects, the position of each object is not filtered so that the dynamics of the object's reported position/motion isn't affected. {{wiki:v2:image_522.png}} ==== Enabling overexposure highlighting and adjusting camera brightness/exposure ==== Like a camera, Pixy2 needs to get the correct exposure setting or its images won't contain enough dynamic range, and detection accuracy will suffer. PixyMon has a feature that highlights regions of the image that are overexposed. You can enable it by clicking on the box next to **Highlight overexposure** in the **PixyMon Parameters** tab (see below). {{wiki:v2:image_218.png}} When this is enabled, overexposed parts of the image will be highlighted as black, as shown below: {{wiki:v2:image_217.png}} We highly recommend enabling overexposure highlighting, because if the object you want to detect is overexposed, detection accuracy will suffer. So, after enabling overexposure highlighting, go to the **Tuning** tab in **Pixy Parameters** and choose a good setting for **Camera Brightness** by adjusting the slider (see below). {{wiki:v2:image_221.png}} A good exposure setting leaves almost all of the pixels in your object correctly exposed, but not too dark (underexposed). It's OK for small parts of your object to be overexposed, especially if your object is shiny. See the picture below -- note that a small part of the object (red ball) has a black region indicating overexposure. This is fine. {{wiki:v2:image_220.png}} ==== Adjust minimum brightness ==== The **Min brightness** slider in the **Tuning** tab sets a minimum brightness setting for all signatures. That is, if a pixel is below the minimum brightness setting it won't be considered as part of any color signature. So if you are seeing false positives that are sufficiently dark, you can adjust the **Min brightness** setting higher to reduce the false positives. If you are not able to detect objects that are sufficiently dark, you can adjust the **Min brightness** setting lower to reduce the false negatives. ==== Use the mouse to teach Pixy2 your object ==== There are two ways to teach Pixy2 an object: the button-press method and the mouse-select method. They are both described [[wiki:v2:Teach_Pixy_an_Object_2|here]]. The mouse-select method makes sure that no unintended pixels make it into the teaching set when making a color signature. ==== Adjust the signature teach threshold ==== One of Pixy2's goals is to be able to easily learn different objects without needing to hook it up to a computer. The button-press teaching method allows you to do this. But for certain objects and/or lighting conditions, the button-press method might need some adjusting. The **Signature teach threshold** setting in the **Expert** tab allows you to adjust how inclusive Pixy2 is when determining which pixels are part of the object during teaching. You can adjust the **Signature teach threshold** while Pixy2 is in teach mode, so you can get "live" feedback while choosing a good threshold. {{wiki:v2:image_230.png}} The picture below is an example of a threshold that is too inclusive. Note the regions that are not part of the green duck (the intended object). In this case, you should reduce the threshold. {{wiki:v2:image_235.png}} The picture below is an example of a threshold that is not inclusive enough. Note that the regions do not include much of thegreen duck. In this case, you should increase the threshold. {{wiki:v2:image_238.png}} The picture below is an example of a good threshold. {{wiki:v2:image_231.png}}