I'm generating data for training an object detection ANN. I'm currently automatically generating the training data based of rules which i'm implementing (automatically captures the image and creates bounding boxes), however the algorithm for creating the data is imprecise (otherwise i wouldnt need an AI for it)
I am looking for an app or github repo that inputs the Pascal VoC annotation file and image, and allows you to visually modify (add/remove/update) the bounding boxes to clean up the data. Using windows currently.
Cheers
Depending on platform I use:
Linux/win - LabelImg
macOS - RectLabel (unfortunately not open source, but only costs $0.99)
Related
I'm making an isometric city builder using Monogame Extended and Tiled. I've got everything set-up and now i need to somehow access the specific tiles so i can change them at runtime as the user clicks on a tile to build an object. The problem is, i can't seem to find a "map.GetLayer("Layername").GetTile(x,y) or .SetTile(x,y) function or something similar.
Now what i can do is edit the xml(.tmx) file which has a matrix in it that represents the map and it's drawn tiles. The problem with this is that i need to build the map in the content pipeline again after editing for the changes to be displayed. I can't really build at runtime or can i?
Thanks in advance!
Something like this will get you part way there.
var tileLayer = map.GetLayer<TiledMapTileLayer>("layername");
TiledMapTile tile;
if(tileLayer.TryGetTile(x, y, out tile))
{
// do something with tile
}
However, there's only a limited amount of things you can actually do with the tile once you've got it from the map.
There's no such thing as a SetTile method because changing tile data at runtime is not currently supported. This is a limitation of the renderer, which has been optimized for rendering very large maps by building static geometry that can't be changed once it's loaded into the graphics card.
There has been some discussion about building another renderer that would handle dynamic map changes but at this stage nothing like that has been implemented in the library. You could always have a go at implementing a simple renderer yourself, a really basic one is not as hard as you might think.
An alternative approach to dealing with this kind of problem might be to pre-process the map data before giving it to the renderer. The idea would be to effectively separate the layers of the map that are static from those that are dynamic and render the dynamic tiles as normal sprites. Just a thought, I'm not sure about the details of how this might work.
I plan to eventually revisit the Tiled API in the next major version of MonoGame.Extended. Don't hold your breath, these things can take a lot of time, but I am paying attention to the feedback and kinds of problems people are experiencing with the existing API.
Since the map data is stored in a XML (or csv) file which runs through the Content Pipeline you can not change it at runtime.
Anyways, in a city builder you usually do not change existing tiles but you place object on top of existing tiles.
Our engineering department wastes a great amount of time reviewing drawings for errors. The majority of these problems involve human errors in labeling (ie. two rooms have the name 01-01-00-RM). Our IT department has come up with a partial solution by automation the room names. However, the engineers still have to type this into AutoCAD.
Is there any way to create labels in AutoCAD based on another file (ie. an Excel/CSV document)? Ideally, one would create a group in a layer and enforce that all elements be unique, then have them retrieve their values from a document.
EDIT
Some screenshots of the labels. Note, for company reasons, I can't put full PDF screenshots up.
First image showing compact label next to a camera. This was on a floor plan overlay.
Second image showing the full lable next to a camera. This was in the block diagram
Yes it's possible, there some different paths:
Lisp: very common on AutoCAD environment and allow some basic (and not so basic) automations.
VBA/COM: can be used from inside AutoCAD or by external process, just need to CreateObject("Application.AutoCAD") and program the steps
.NET or C++: in-process automation that allow powerful customization, up to a major remodeling of AutoCAD.
So, depending on your expertise, you may choose different approaches. It may also combine with batch processing via AutoCAD Console.
Find more at http://www.autodesk.com/developautocad and at the blog http://adndevblog.typepad.com/autocad
If the labels were blocks with attributes then you could use the ATTOUT and ATTIN commands in Express tools to export / import them in to/out of Excel. Watch for cell formatting in Excel - eg. numbers like 1/2 turn into dates if you leave the formatting as "General".
Programmatically this is reasonably trivial if the data is structured. An AutoCAD drawing is actually a hierarchical object database so everything in it is addressable, finding it is often the hardest part. If you have an AutoCAD installation handy, have a look into a drawing with MGDDBG to get an idea of the database structure.
I am working on a project, which is Android app that uses camera to capture a photo of some ticket and does OCR recognition for only a part of it. I have no previous experience in image processing, but I know it must be some kind of tricky way, because Android applications have small RAM limits.
I have not enough reputation points to post images so I give URLs to it.
Below, I attach image before any processing:
My aim is to automatically detect these lines of (---) and crop it so that final image look like this one:
What's more - it's important to stay open-source and do it without sending photo to some external image processing service.
You can try using Hough Transform to find the lines. OpenCV has a implementation that is open source and works on Android.
HoughLineP is a very efficient Version of the HoughTransform to find Line Segments.
Olena is definitely the way to go!. It's a generic image processing library, but the interesting part is an module that's called Scribo.
Scribo will do document analysis on the picture to extract text and/or image regions, and optionally send text regions to tesseract for recognition.
Being feasible for Android or not is something that I couldn't tell. I've tried it on OSX and Linux systems and it shows great potential.
I'm attempting to experiment and get started with image analysis and OpenCV
My aim is to detect certain objects in random pictures, which are easy to detect, for example: symbols and brand logos. I'd also like to be able to detect more variable features like facial features, porn features. usecase: autotagging, autofiltering
My questions:
Where should I start learning applied image-analysis in the context of my aims?
What are important existing concepts/approches that I should introduce myself to?
What are good existing solutions/components of OpenCV which i can feed with training-datasets of example pictures showing the objects of interest and then make a human manually outline the shapes of interest in order to make it learn to detect the features.
any ideas on how to do a simple image registration (I have IMAGE1 and IMAGE2 takes from the same subject, but with camera moving a little and want to match IMAGE2 with IMAGE1)?
I checked MANY softwares to do that, but they're all focused on medical images, so I couldn't input a simple JPEG (one even allowed PGM, but didn't work).
thanks
There is an excellent package called "ANTS", which you should refer to:
http://www.picsl.upenn.edu/ANTS/
You may also like to look into a popular package called "ITK":
http://itk.org/
To solve this problem you need to break it up into managable steps.
1. You have to have a set of similar points (this is typically found by feature detection) or user selection.
2. Once you have the points needed you need to find the transformation matrix between the two images (based on the given points you recieved).
3. Use the transformation matrix to translate one image onto another.
Things That Should Help:
Feature Detection Algorithms: SIFT
Topic that this is under in computer vision: Photo stitching, Homographies, Image Registration
There is a very easy way to perform it on slicer, look at the package: general registration
you can simply insert your images, define your registration type and your transformation file and then run it.
Simple ITK, primarily for medical, will read .jpg's and has the full suite of registration tools.
reader = sitk.ImageFileReader()
reader.SetImageIO("JPEGimageIO")
reader.SetFileName(inputImageFileName)
image = reader.Execute();