Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
As a practical developer I would like to make a good algorithm for my specific task, built from blocks, like a 'boundary extraction', or 'gamma correction' and so on, but I don't want to implement the wheel, making all that stuff, so I wander - if there's any powerful CV library, like C++'s OpenCV?
Saying "the best", I mean library having following properties:
Lot of different algorithms implemented
Extensibility - I can create new stuff in terms of the library
High performance
Thread safety
You might be interested in a pure Java open source computer vision library I have developing, BoofCV. BoofCV supports many common image processing operations, advanced feature detection, wavelet denoising, camera calibration, stereo vision and structure from motion . It's also very fast. Currently has the fastest SURF implementation out of any open source library, including C/C++ ones. Speed wise, it is very competitive with OpenCV for mid to high level vision algorithms. OpenCV is of course faster for low level image processing.
Website: http://boofcv.org
OpenCV vs BoofCV: http://boofcv.org/index.php?title=Performance:OpenCV:BoofCV
SURF Performance Study: http://boofcv.org/index.php?title=Performance:SURF
Ok enough marking. Hope you guys like it!
Much of the code is already in place, just missing a couple of components.
Shaman,
I have been looking a long time for a image processing library comparable to opencv in Java. For the amount of automated tasks opencv performs there is nothing that comes close to it for the advanced machine vision type applications.
In terms of image processing though imagej has a large amount of preimplemented algorithms and plugins. I use this library all the time to preprocess things I need to send into opencvs machine vision utilities. This is also open source with easy ways of adding additional features through plugins or direct manipulations so I think it could meet most of your requirements.
OpenCV has Java wrappers:
OpenCV Java and Processing library
JavaCV
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
I know it has been asked many times before but I am still confused.
I need to develop an application that works mainly with data, something similar to facebook for example.
I want to target both Android and ios.
I do know some Html/css/javascript though I am not an expert.
I find it very difficult to work with Javascript, difficult to debug etc.
Will it be easier to work with Java/ Objective C?
From my experience .Net is 100 times easier then Javascript. Is it the same with Java/Objective C?
Also I am looking for the long run on how to work in the next projects(which will also be information based), so I am willing to sacrifice time and learn platforms. What will be the learning curve for on against the other, and once you know the platforms, what will be easier?
Another question: do you think there will be a demand for phonegap developers in the future? since I don't think that now it is in demand/use, as the expectations were from this platform.
I'll try to answer some of your questions:
If your app is data-intensive (facebook example, a lot of multi
threads to load a lot of data) you should use native language for
your app because it will be a lot less slow. I develop both in iOS
and Android, the learning curve really depends your own experience.
If you are better at object-oriented languages and have experience
with listeners Android will be easy as pie. But learning to develop
in ObjectiveC requires to have some experience with pointers and
structure/funcion-oriented languages (C,C#,C++). I find Android to be
easier for beginners tho ;)
Phonegap at the moment is a very good choice for small, light apps,
and it's community is growing bigger and bigger (you got Cordova
also, works just like Phonegap) and if you have experience with web
development and design it will be a LOT easier to develop your first
app.
There is a big BUT in using Phonegap/Cordova: the UI is slow at the moment, by that I mean that when you click a button or icon it is somewhat slow to react compared with native...if your app is client-oriented I wouldn't use Phonegap. This "slow" effect worsens with data-heavy apps so take care what you decide.
Hope that I've helped you out, feel free to ask anything ;)
Will it be easier? Not so much when you get the hang of it. I have made a web app using PhoneGap and I still liked writing it in the native enviroment (PhoneGap did not produce the results which I have hoped for).
If you really have time and you're willing to learn then you should go native. That way you will learn more languages which will benefit you more in the long run. Java is going to be easier if you're used to OOP. But don't be scared of anything. Go for it!
In the future? Well JavaScript, HTML5+CSS3 is already popular and might grow even more.
Use PhoneGap for small and light apps and not for "Facebook" type apps:)
Thats just my humble opinion.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I am new to image processing, please suggest some good resources(Books and Weblinks) for learn image processing(best for steganography analysis) in java for beginner as well as advance level.
I have seen documentation provided by oracle, but I want some tutorials and books which focus on the practical environment used in the current development in industries.
Thanks!!
Image processing is an extensive field with many theoretical aspects. Learning image processing involves reading books, articles and developing algorithms. You can go even further, investigating the structure of the human eye and neurocognitive aspects of the vision in order to understand the foundations of image observation.
Books:
Digital Image Processing (3rd Edition) by Gonzalez, Rafael C. and Woods, Richard E. (Jun 20, 2012)
Digital Image Processing: An Algorithmic Introduction using Java by Wilhelm Burger and Mark J. Burge (Jan 19, 2012)
Machine Vision, Third Edition: Theory, Algorithms, Practicalities (Signal Processing and its Applications) by Davies, E. R. (Dec 22, 2004)
Vision: A Computational Investigation into the Human Representation and Processing of Visual Information by Marr, David, Ullman, Shimon and Poggio,
Guidance of topics to learn (my opinion):
Introduction to Digital Image Processing
Human Visual System
Color Models
Color Image Processing
Filtering
Image Transformations
Morphological Image Processing
Segmentation
Feature Extraction (edges, lines, corners, etc)
Image Restoration
If you want to recognize objects and patterns, you need to study pattern recognition. It is a complex field with concepts of image processing, statistics, mathematical optimization and machine learning.
As you can see it is long journey. Along with reading, of course you have to implement some computer programs. I think you need to balance between implement your own algorithms and use frameworks. Below is a list of Java frameworks and tools may help you:
ImageJ ( http://rsbweb.nih.gov/ij/index.html): image processing program developed at the National Institutes of Health.
Marvin Framework (http://marvinproject.sourceforge.net/): project that aims to provide an easy to use and extensible framework for image processing and computer vision.
JMagick (http://www.jmagick.org/index.html): Java wrapper for ImageMagick
JAI (enter link description here): Original Sun's Java Advanced Imaging
JIU (http://sourceforge.net/projects/jiu/): Java Image Utilities
Machine learning tools and framework:
Weka ([http://www.cs.waikato.ac.nz/ml/weka/6)
I invite other stackoverflow contributors to improve this post.
Have a look at Fiji which is using ImageJ and provides you with a graphical interface for experimentation.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 8 years ago.
Improve this question
Has anyone seen an example or done the following in Java:
http://duganchen.ca/single-page-web-app-architecture-done-right/
That is a design a single page web app that will work with Google SEO with out massive violation of DRY using Java technologies?
It doesn't seem terrible hard to do this on my own but I was curious (and lazy) to see if someone had already done it with either Spring or JAX-RS.
I have built quite a large "single-page" javascript website, that generats all HTML on the client. Server provides JSON only responses. I used Google Closure tools for the following reasons:
Google Closure Templates allows designing templates in high level templating language (named soy) which is compiled either to pure javascript functions to run on the client or java code to run on the server site.
Google Closure Compiler, which allows separating javascript code to modules and provides autmatic dependency injection for uncompiled mode. Good program structure and modularisation is necessary for any project exceeding simple html decoration. This is hard to achieve with frameworks like jQuery or dojo. In advanced compiled mode it transforms your javascript to shorter an more efficient equivalent, eliminates dead code and do dramatic reduction in size, which can shrink the original codebase to few % of the original size.
Google Stylesheets is meta css language which works great with closure compiler.
Google Closure Library is huge and well tested javascript library and with closure compiler, you only take what is needed.
To streamline the development, I'm using plovr, written by Michale Bolin, a former googler, one of the members of the original Closure Compiler Team.
I can recommend reading Michale's book: Closure, the Definitive Guide.
I must but warn, the initial leraning curve might be quite steep, but it is well worth the pain. Google used this tools to write almost all their web projects.
Just one more thing
If you feel really adventurous, and want to peep in to the future, I recomend upgrading the former strategy with Clojure/ClojureScript. For the start, watch this very persuasive talk of Rich Hickey and make sure to check Clojurescript one project.
I recommend AribaWEB for its advanced AJAX usage.
http://aribaweb.org/
Take a look to ItsNat, is a Java framework focused on Single Page Interface SEO compatible websites.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
We are currently researching ways of enhancing image quality prior to submission to OCR. The OCR engine we are currently utilizing is the Scansoft API from Nuance (v15). We were researching the Lead Tools but have since decided to look elsewhere. The licensing costs associated with Lead Tools is just too great. To start with we are looking for simple image enhancement features such as: deskewing, despeckling, line removal, punch hole removal, sharpening, etc. We are running a mix of .NET and Java software, but java solution would be preferred.
Kofax is good for pre-processing, but for the types of cleanup you are talking about may be overkill unless the images are really bad. Unless your specialty is in image processing, I'd recommend working with a provider that does the image cleanup and the OCR so you can focus on the value you actually add.
We license the OCR development kit from ABBYY (ABBY SDK) and have found it to be superb for both image processing and OCR. The API is quite extensive, and the sample apps, help and support have been beyond impressive. I definitely recommend taking a look.
Disclaimer: I work for Atalasoft
We have those functions and run-time royalty-free licensing for .NET.
http://www.atalasoft.com/products/dotimage/
We also have OCR components including a .NET wrapper for Abbyy, Tesseract and others and Searchable PDF generation (image on top of text in a PDF)
Not sure if this would be quite up to the standards that you guys would need, but perhaps you should look at some of the Paint.Net APIs. I don't know how easy it would be to extract their image processing algorithms for use in your project, but I believe they do some of the things you are looking for. Plus it is an open source project with an MIT License, so it should be pretty friendly for business use.
Research about KOFAX VRS at KOFAX.com
Maybe JMagick, it is an open source Java interface of ImageMagick. It is implemented in the form of a thin Java Native Interface (JNI) layer into the ImageMagick API. It's licensed under the LGPL so it shouldn't be a problem license wise.
http://sourceforge.net/projects/jmagick/
I would suggest Intel for its zero-cost runtime licensing.
Depends on the number and quality of the original images. Managed code and imaging tool kits will work but it's not always the best solution if you haved several million images to process. For small batches and tight budgets, I agree with the previous posters that projects like Aforge, Paint.NET, and other open source computer vision libraries will do the trick. Of course, you are on your own if the results are not improving... At least this let's you put everything you need under one application for a low cost.
If you are processing several hundred thousand images a month, then I would suggest you divide up the process into smaller workflow step and tweak each one until your cost per image gets as close to zero as you can. You will find that the OCR results rise quickly at first and then level off sooner than you expected. (I'm not a big fan of OCR but it has its place)
I use commercial Windows product from Recogniform to process and clean up the images prior to OCR in a batch mode using scripts adjusted for various kinds of images. If an image fails QC or is rejected by the OCR engine, it is "repaired" by hand using a custom .NET application built with Atalasoft's toolkit. Batch process everything and only touch what fails.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
Can anyone recommend a library for chart generation (bar charts, pie charts etc.) which runs on both Java and .Net?
ChartDirector is fantastic and supports more than just Java and .NET.
Have you looking into using JFreeChart. I have used it on a few Java projects and its very configurable. Its free but I think you can purchase the developers guide for $50. Its good for quick simple charts too. However performance for real-time data is not quite up to par (Check out the FAQ).
They also have a port to .NET however I have never used it.
Hope that helps.
Dundas Charts was about the easiest thing ever to get up and producing amazing looking charts.
Flash Charts.
http://www.fusioncharts.com/free/Gallery.asp
You could also try Open Flash Charts
ChartFX (http://www.softwarefx.com) has been a leader in charting for years. I personally have used several different versions for over 8 years and it is rock solid.
I have re-evaluated charting options periodically, and ChartFX has won in my environment based almost purely on feature set. It is not free or cheap, but it is well worth the price they charge.
-Geoffrey
Here is a belated answer:
Use the Google Chart API. It will allow you to create charts in a programming language and platform agnostic way -- assuming your app will have an Internet connection at all times. Use it in combination with .Net and Java wrapper APIs that you can find here.
I wrote one: charts4j.