I'd like to build an app for Windows 8 / Windows Store where a user can take a picture with his device and the app will return an image from a database which looks the closest to it.
For example, you scan the front of a book and you get the right product image from the db.
Now, I know this isn't an easy task and so I was wondering, if there are any libraries working on Win8 I could use.
I heard about tools like OpenCV, SURF and AForge.net, but can I use those on Windows 8?
I hope you guys can give me a point to start.
This is a very general question and thus can only yield a very general answer. Since you are targeting tablet devices you need to remember that they do not have nearly the processing power of a normal PC. Other applications on other devices that offer this type of functionality typically offload a lot of the work to their servers. I believe most of them do very little pre-processing on the device (normalizing to the correct resolution or doing some histogram generation) and then upload that to a server that has the databases and heavy analysis tools to do the comparisons.
The easiest way to start an application like this from the Windows 8 perspective would be to get an application that can take the picture and normalize it to a specific resolution. Once you have that, build functionality to upload that to a server. You then need to implement server code to use tools like AForge to perform the image processing that would allow you to compare images.
There are tons of great resources on how to compare images and you are going to have to wade through them and find ones that work for you. To start you might want to read this thread:
Image comparison - fast algorithm
In the end you need to decide what algorithm works best for the images you want to compare.
Related
I have a web application where user uploads the images of their locations. I want to write a program to detect the type of location and list of objects from the image. I write a program in C# using alturos YOLO to detect objects in the image. The result is fine for me but the problem is i want to detect the place type from the image. Like, if you upload some image that has snow then it should detect the "Snow" keyword. If you upload the "Lake" image then it should show keywords like "Lake, water, river etc". I am a web developer and never done any Machine Learning or image processing thing. But i am keen to learn this. Is there any way to do this or anyone can tell me the right path to do this.
I found this "https://www.clarifai.com/" but i want to write my own code because i have large number of images.
All in all, I'm pretty sure that there's no single correct answer to this. You could implement image recognition in a hundred different equally correct ways using different tools. So here's my opinionated perspective. Anyone and everyone is free to agree/disagree with what I'm saying.
I've worked a bit with Open CV (Python) in the past. There are a great number of libraries available based on it, so you can probably find a working base to build off of. I think that it should be capable of doing the task you specify, although I'm not quite sure how it would be done.
The other framework for machine learning and object recognition that I have seen is Apple's Create ML/ Core ML system (Swift or Objective-C). My experience with that one is as limited as cloning a git repo and poking around inside, but it looks pretty powerful.
I have been working on Xamarin forms for a long time now but the thing that has always bugged me is what is the better approach to store images in xamarin forms.
I wanted to know which images should I use from PCL and which ones should I put in native resource files or is using PCL images a bad approach altogether.
I went through everything in Local Images and Embedded Images but found nothing related to the better approach among them or performance or anything as such.
At the end after all the research for almost a year I came to the conclusion that the Local Image approach suits me better, even with the case where I had to add it to all three native projects depending what I target.
Reason being the following:
When I use local images I have an option to place different images in different size folders i.e. HDPI, MDPI(Android) and #2x,#3x(iOS)
What the above point does for me is it selects the image it should pick as per the current devices resolution which cannot be achieved with EmbeddedResources
One possible solution to issue mention above was using SVG's but as everyone knows that if the image you are using needs to look pixel perfect SVG's are not your best option as they lose some details here an there as you use them in your mobile devices.
One more cheeky thing I did (but I like to share my dev secrets) was whichever Images in my application were only in one size for all resolutions and platform or at least two of them I incorporated them in the Shared code
Note: Embedded Resource takes a little more time to load then your native Local Images always consider that while using
I'm planning on doing an interactive AR application that will use a laser sensor (for distances), GPS technology to get a location, and then use compass/gyroscope for tracking 6DOF viewfinder
movements. The user can choose from a number of ready-made 3D-models, and should be able to place them by selecting the desired location on the screen.
My target platform will be a 8"-handheld-device, running on windows8.
Any hints what would be the best AR-SDK or 3D-viewer to work with?
thanks in advance!
There are quite a few 3D viewers that are working in the browsers. But most recently and most notably: va3C viewer
It is webgl based app and doesnt require a server, so if your handheld device supports webgl, then you are good to go, however, whether it works on IE or not is questionable ;).
Although based on my experience and your usecase, I believe client side JS libraries do not provide enough access to the device's hardware. So you might have to serve the information like GPS, Gyroscope, from the server side, then gather this on the client using something like socket.io and then mash it up alongside the geometry.
I am trying to do something similar, although havent quite done it yet. Will keep you posted.
Another approach I am exploring is X3DOM, which gives the ability to write 3D data like XML alongside HTML, which is quite declarative and simple to pickup. X3DOM derives from X3D.
Tell me if you need more info.
Also, worth exploring for its motion abilities, is Robot Studio, which is a desktop app with SDK.
Is there any image comparison server software out there, made from something like OpenCV (Windows or Mac)? I'm looking to make an in-house image recognition server for an internal project and I need to know if there are any options out there.
Most that I see available are Internet web-based API's and cost monthly fees. I'd like to set something up internally instead, both for quicker speeds and cheaper costs.
If not, what is recommended as the best way to set something like this up?
Check this out
http://www.abbyy.com/recognition_server/product_overview/ - Product Overview
http://www.cvisiontech.com/products/general/maestro-recognition-server.html
Also this article might be helpful
https://www.google.com/enterprise/marketplace/viewListing?productListingId=6096210+10692120271328191677&pli=1
We have included a binary image classifier with the open library SimpleCV:
http://www.simplecv.org
Here is a video of what I'm talking about:
http://www.youtube.com/watch?v=cH5e-ZkJa0U
You could use that example to start to build something up. It doesn't work as an image search out of the box, but you could probably easily modify it to do what you want.
I was wondering what are the pain points for other developers when learning Windows Phone 7 programming. For me is switching between application pages and the MVVC. If you have any hints or resources helping to overcome these pain points, please share it.
When switching to a new development platform there are bound to be new things to learn.
If you're coming from a web background it's important to note that you're no longer in the same stateless world as the web. There is also a different navigation model. (Especially if you're developing in XNA!)
The biggest, and in my opinion, most important difference in moving to developing for the phone (or any mobile platform) are teh follwoing 6 points.
"Mobile" applications are used
differently to desktops ones. -
Expect users to have less time to
spend with the application and be
doing other things at the same time.
Input is different. - Consider
[multi-]touch as well as voice,
location and sensors rather than
mouse and keyboard.
Output is different. - Even if just
considering output to the screen,
it's very different developing for a
small screen than a large one.
Connectivity is nott guaranteed. -
Create apps which work offline and
are occassionaly connected. Don't
assume a network conneciton is
guaranteed or fast.
Performance is important. - Partt of
the way that"mobile" applications
are used differently to their
desktop counterparts creates a
different expectation from users and
they are much less tollerant of
applications which are displaying
the equivalent of a wait cursor. Do
no more than you have to and be sure
to keep the app/device as responsive
as possible.
Resources are constrained. - The
most important consequence of this
is to do no more than you must, so
you can preserve battery life.
Afterall, if you run down the users
battery they get frustrated and
can't use your app.
Unfortunately the best way to avoid running in to problems is to develop a detailed knowledge and understadnig of the platform.
With that i mind, I'd recommend the following resources:
For general information check out the MSDN documentation.
I'd like to particularly draw your attention to:
the design resources, particularly the UI guidelines - so you can create something which looks like it is actually part of the platform.
and the fundamental concepts - so you don't waste time trying to do something which isn't possible.
Other useful resources are:
- Code samples
- Online training (there are updates to this coming soon)
- the book by Charles Petzold
There is a great, organised resrouce list here which covers pretty much all the major points of Windows Phone 7 development.