Android Advanced Image processing - java

I want to build a Image editing application. I've gone through convolution matrix for creating basic color filters but I want the app to also have advanced editing capabilities like highlight/shadow adjustment, vignette, curves adjustments etc.
Any chances that I might find some examples for the same to learn more about it. Also, any kind of helpful resources would be a great help.
P.S. If there is an existing image editing library/sdk that can get the job done, that would be great too

You should look at opencv and vxl. They are libraries of computer vision functions and have open source community around them. Opencv is a big library/community. I was looking into image processing libraries for some ideas I have (permanantly stuck in pre-development due to lack of time) and I have played with them a bit on linux. I'm still very much an opencv/vxl n00b though.
https://en.wikipedia.org/wiki/OpenCV
I found vxl a bit faster to get started with.
https://en.wikipedia.org/wiki/VXL
There is support for opencv on Android:
http://opencv.org/platforms/android.html
There is not support for vxl on android as far as I can see.
Now, both of these are pretty big projects. I would say there is ALOT to learn and it will take a while. But I think it is probably well worth-while learning. There are many tutorials and examples.
Get the source code first:
$ git clone https://github.com/Itseez/opencv
$ git clone http://git.code.sf.net/p/vxl/git vxl
Especially for a mobile platform it will be important to get the use of image processing right - so that it doesn't kill battery of device - so . . . lots of experimenting and testing and learning to do!
Have fun!

Related

Can't open a window in netbeans with LWJGL

I'm trying to write a small platformer game in Java. Nothing big, more of a practice exercise for other things. However, I keep running into an issue trying to use OpenGL for graphics. My IDE is Netbeans v.8.2, and I'm using LWJGL to access OpenGL. When I try to run the basic 'test' code LWJGL provides(https://www.lwjgl.org/guide) it won't run. The error I'm getting is:
[LWJGL] GLFW_API_UNAVAILABLE error
Description : WGL: The driver does not appear to support OpenGL
This is really weird though, as I know my GC and driver do support OpenGL. I can run Minecraft which uses it(not the best test I know), and I've confirmed using GPU Caps Viewer that my driver( Intel(R) HD Graphics) supports OpenGL 3.1. It's driving me crazy, and I've spent days looking for anything like this online, but all I can find are extrememly outdated posts and sources that don't seem to apply to my situation. OpenGL seems to be the perfect tool for the graphics of this project, and I'd really rather not switch over to something else, or re-write the program in something like C++ just to use it. So I'm turning to the brilliance of StackOverFlow. Any ideas?
With the information available in the question, this is most likely the second of the two cases here: https://github.com/LWJGL/lwjgl/issues/119#issuecomment-138078724
To reiterate, Intel dropped support for their HD Graphics 2000/3000 GPUs, and it looks like something in Java 8u60 broke support. I would first try making sure everything is up to date (GPU drivers, Java, LWJGL), and if that doesn't work, try downgrading below 8u60.
It looks like there's also a driver-side patch from Marcinosoft at the bottom of that issue that you can try installing as well before downgrading.

Is there a 3D version of GraphViz?

I find GraphViz easy to use, but it renders 2D graphs. Is there an equivalent that renders 3D graphs? The nodes could stay 2D but the graph as 3D would be great. If not, is there an alternative such as using a Perl module or Java package?
My searches only result in 3D gaming engines.
With GraphViz, you can render directly to VRML:
dot -Tvrml graphviz.dot > graphviz.vrml
Then you can use this tool (a java jar that can be run from the command line) to convert VRML to X3D:
http://www.deem7.com/vrmlmerge/howto.php
And then view the X3D file in a browser using the following techniques:
http://doc.x3dom.org/tutorials/models/inline/index.html
Update (years later): deem7.com seems to have gone away, although you can find the original tool via the wayback machine, there are other online tools that seem to do this. Example: https://doc.instantreality.org/tools/x3d_encoding_converter/
There is not a great interactive tool I know about, but you can generate a 3D layout in Pajek and then use the King viewer in a website. You can see an example in this YouTube video, with a screenshot here:
Just so you know, while 3D graph visualizations look pretty they are actually quite poor at showing graph structure due to lots of occlusion. This is even worse for a static image with no interaction. I would highly suggest using a good 2D graph visualization system like Gephi, NodeXL, or Cytoscape. Disclaimer: I am an advisor for the NodeXL project.

Searching for Java library to build an app that interacts with data

I have a project where I should analyse data via cluster analysis. Basically the data should be visualised like this picture shows
Each dataset - for example let it be people - is one horizontal row, where vertical lines showing the attributes like sex, age, and so on.
Now if this data could be shown I also want to move the rows horizontal and also vertical a) via code and b) via drag & drop.
Do anybody know a good library for that?
Important
Target is desktop application
Expected datasets around 500
Attributes for each data set around 60
There is an app in Java/SWT already, so solutions in this direction would be preferred
The OS is Win7 so C# or similar would be a stopgap
I really like d3.js, and would prefer a similar lock & feel (but in 3D)
If somebody has recommendations for a library which helps to analyze the data, please step forward too!
Check What is the best open-source java charting library? and Libraries for pretty charts in SWT? for more info.
I did used JFreeChart with SWT (2 years ago). The code is quite horrible (you have to write tons of code), but it works and is directly renderable with SWT components (no need of SWT_AWT bridge).
EDIT
When I thought about it again, I realized, that you can use the JavaScript library through Browser widget. It's quite heavyweight solution, but it might work..
You can do this in d3 but it is a very involved process in which you need to deal with the ismoetric perspective and the rest. It shouldn't be terribly complicated but it will not be an out-of-the-box solution.

Hiding ImageJ interface elements

I'm working on a project involving enlisting a large number of
relatively unskilled workers to do repetitive image analysis using
ImageJ. I've written a set of macros which walk them through the
analysis process, but in order to increase throughput and reduce
errors, I'd like to figure out how to hide as much of the gui/menu
interface as possible.
An optimal solution would show just the image in question and a set of
icons to select the correct macro. To further complicate things, I'm
planning on delivering the applet and image to be analyzed through a
website (though my understanding is that this shouldn't change too
much).
I've searched a fair bit and can't seem to find an example of how to
do this interface simplification. If anyone can point me in the right
direction I'd be quite grateful. I'm open to any suggestion that works, though since my Java is a bit rusty, a macro/script/configuration solution might be easier.
I solved my problem with the excellent Action Bar Plugin:
http://imagejdocu.tudor.lu/doku.php?id=plugin:utilities:action_bar:start

Java VNC Applet vs Screen Capture

I am trying to make an application in which one component captures the screen of the user (for screen casting). I am aware that there are two options to achieve the same using a Java applet (please correct me if I am wrong). First is to use the java applet to take screen shots continuously and convert it into a video and upload it as a video file. And second is to create a java vnc server and record it as a .fbs file and play it using a player like: http://www.wizhelp.com/flashlight-vnc/index.html
I would like to know the best solution in terms of video quality, file size, cross-platform compatibility (windows and mac), firewall problems and finally ease of implementation.
I am very new to Java. Please tell me whats the best solution for my problem. Also, is it easy enough for me to program it on my own or should I get it developed via a freelancer. I have tons of programming experience (5+ years in LAMP) but none in Java.
Thank you very much.
I agree that this is pretty hard. I implemented those two solutions (VNC and onboard screen capture) plus a third (capture from an external VGA source via an Epiphan grabber) for a former employer. I had the best bandwidth-to-quality ratio with VNC, but I got higher framerate with VGA capture. In all three cases, I reduced the frames + capture times to PNGs and sequenced them in a QuickTime reference movie. Then I made flattened video (MPEG4 or SWF) of the results. In my case, I then synchronized the screen video with a DV stream.
In the end the technology worked (see a sample of the output) but our business model failed.
From what I know, the older versions of applet had security restrictions that may not allow for screen capture. Instead, a java application may be feasible.
Regarding the build-it-yourself vs the fire-a-coder, it depends on how you value your time compared to what you can find on a freelancer site.
I think you can find someone from India/Romania/Poland/Other countries that can make it for an affordable price
Given your Java knowledge and the difficulty of the task, have you considered taking an alternative approach? For example, how about a native VNC server for the end-user, which is just a small download and then they click "Run." And that native server is programmed to capture the screen and send it straight to your web server, which has a client like vnc2swf or other means of converting the VNC stream to a video or .fbs file? Does all that make sense?
Admittedly, without Java, you have to prepare one executable program per platform you want to support, however, I don't know. That still sounds easier to me. Consider Copilot.com. They are doing VNC but they still use small native apps for each platform.
Sorry but this seems the kind of job that requires a lot of experience. Even if you find code snippets all around the net to fix this and that, the overall result may be way worse than simply hiring an experienced Java programmer.

Categories