|
|
How to get a inpainted image using wavelet based algotithm
|
|
|
|
|
i want java code for implementing Wavelet transform for inpainting the image...please anybody help me
|
|
|
|
|
|
K fine..i tried to convert an image from RGB to Ycrbr but it does work...Can u tell where i made the mistake...
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
import javax.swing.*;
import java.awt.image.*;
import javax.imageio.ImageIO;
public class Picture{
JFileChooser fileChooser = new JFileChooser();
final JFrame frame = new JFrame("Edit Image");
Container content;
static BufferedImage image;
BufferedImage image2;
JLabel imageLabel;
public Picture() {
//asks for image file as input
fileChooser.setDialogTitle("Choose an image file to begin:");
fileChooser.showOpenDialog(frame);
File selectedFile = fileChooser.getSelectedFile();
if (fileChooser.getSelectedFile() != null) {
try {
//reads File as image
image = ImageIO.read(selectedFile);
}
catch (IOException e) {
System.out.println("Invalid image file: " + selectedFile);
System.exit(0);
}
}
else {
System.out.println("No File Selected!");
}
}
public int width() {
//returns width of present image
int width = image.getWidth();
return width;
}
public int height() {
//returns height of present image
int height = image.getHeight();
return height;
}
/*
public void getImage() {
this.image = image2;
}
*/
public void saveImage() {
//saves current image as JPEG
fileChooser.setDialogTitle("Save this image?");
fileChooser.showSaveDialog(frame);
try {
//writes new file
ImageIO.write(this.image, "JPG", fileChooser.getSelectedFile());
}
catch (IOException f) {
System.out.println("Saving failed! Could not save image.");
}
}
public void show() {
//set frame title, set it visible, etc
content = frame.getContentPane();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
//add the image to the frame
ImageIcon icon = new ImageIcon(image);
imageLabel = new JLabel(icon);
frame.setContentPane(imageLabel);
//add a menubar on the frame with a single option: saving the image
JMenuBar menuBar = new JMenuBar();
frame.setJMenuBar(menuBar);
JMenu progName = new JMenu("Edit Image");
progName.setBackground(Color.RED);
menuBar.add(progName);
JMenu fileMenu = new JMenu("File");
menuBar.add(fileMenu);
JMenu editMenu = new JMenu("Edit");
menuBar.add(editMenu);
ImageIcon exitIcon = new ImageIcon("app-exit.png");
JMenuItem exitAction = new JMenuItem("Exit", exitIcon);
progName.add(exitAction);
exitAction.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ImageIcon saveIcon = new ImageIcon("save-icon.png");
int askSave = JOptionPane.showConfirmDialog(null,"Save current image?", "", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, saveIcon);
if (askSave == JOptionPane.YES_OPTION) {
//opens save image method, then exits
saveImage();
System.exit(0);
}
else {
//exits without saving
System.exit(0);
}
}
});
ImageIcon newIcon = new ImageIcon("new-image.png");
JMenuItem newAction = new JMenuItem("Open Image", newIcon);
fileMenu.add(newAction);
newAction.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ImageIcon saveIcon = new ImageIcon("save-icon.png");
int askSave = JOptionPane.showConfirmDialog(null,"Save current image?", "", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, saveIcon);
if (askSave == JOptionPane.YES_OPTION) {
//opens save image method, then asks asks for new image file
saveImage();
Picture p = new Picture();
imageLabel.setIcon(new ImageIcon(image));
//resizes canvas to fit new image
frame.setSize(width(), height());
}
else {
//asks for new image file since user did not want to save original
Picture p = new Picture();
imageLabel.setIcon(new ImageIcon(image));
//resizes canvas to fit new image
frame.setSize(width(), height());
}
}
});
ImageIcon saveIcon = new ImageIcon("save-image.png");
JMenuItem saveAction = new JMenuItem("Save Image As...", saveIcon);
fileMenu.add(saveAction);
saveAction.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//opens save image method
saveImage();
}
});
ImageIcon gsIcon = new ImageIcon("grayscale-image.png");
JMenuItem grayScale = new JMenuItem("Grayscale", gsIcon);
editMenu.add(grayScale);
grayScale.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//grabs height and width of image, then grayscales it
grayscale(width(), height());
}
});
ImageIcon ycrbIcon = new ImageIcon("ycrcb-image.png");
JMenuItem ycrb = new JMenuItem("YCrCB", ycrbIcon);
editMenu.add(ycrb);
ycrb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//RGB
rgbycbcr();
}
});
ImageIcon scaleIcon = new ImageIcon("scale-image.png");
JMenuItem scaleImg = new JMenuItem("Scale Image", scaleIcon);
editMenu.add(scaleImg);
scaleImg.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//asks for height and width to create new image
ImageIcon widthIcon = new ImageIcon("LR-arrows.png");
String scaleWidth = (String)JOptionPane.showInputDialog(null,"What should the new width be?", "", JOptionPane.QUESTION_MESSAGE, widthIcon, null, null);
ImageIcon heightIcon = new ImageIcon("UD-arrows.png");
String scaleHeight = (String)JOptionPane.showInputDialog(null,"What should the new height be?", "", JOptionPane.QUESTION_MESSAGE, widthIcon, null, null);
//turns user input strings into doubles
double x = Double.parseDouble(scaleWidth);
double y = Double.parseDouble(scaleHeight);
//casts doubles as ints
int newWidth = (int)x;
int newHeight = (int)y;
//resizes frame to fit new image dimensions
frame.setSize(newWidth, newHeight);
//calls scale method to resize image using given dimensions
scale(newWidth, newHeight);
}
});
ImageIcon rotateIcon = new ImageIcon("rotate-image.png");
JMenuItem rotateImg = new JMenuItem("Rotate Image", rotateIcon);
editMenu.add(rotateImg);
rotateImg.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
//paint the frame
frame.pack();
frame.repaint();
frame.setVisible(true);
}
// convert to grayscale
public void grayscale(int width, int height) {
// create a grayscale image with original dimensions
image2 = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
// convert colored image to grayscale
ColorConvertOp grayScale = new ColorConvertOp(image.getColorModel().getColorSpace(),image2.getColorModel().getColorSpace(),null);
grayScale.filter(image,image2);
imageLabel.setIcon(new ImageIcon(image2));
//getImage();
image = image2;
}
// convert to ycrcb
public void rgbycbcr()
{
int r=255,g=255,b=255;
int h=height();
int w=width();
int total_pixels = (h * w);
Color[] colors = new Color[total_pixels];
int i = 0;
for (int x = 0; x < w; x++)
{
for (int y = 0; y < h; y++)
{
colors[i] = new Color(image.getRGB(x, y));
i++;
}
}
for (i = 0; i < total_pixels; i++)
{
Color c = colors[i];
r = c.getRed();
g = c.getGreen();
b = c.getBlue();
}
//rgb2ycbcr(int r,int g,int b, int[] ycbcr)
//{
int [] ycbcr={255,255,255};
int y = (int)( 0.299 * r + 0.587 * g + 0.114 * b);
int cb = (int)(-0.16874 * r - 0.33126 * g + 0.50000 * b);
int cr = (int)( 0.50000 * r - 0.41869 * g - 0.08131 * b);
ycbcr[0] = y;
ycbcr[1] = cb;
ycbcr[2] = cr;
//}
}
//scales image by a given factor
public void scale(int width, int height){
//uses user-input dimensions to create new image
image2 = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = image2.createGraphics();
//gets new dimensions and resizes image
g.drawImage(image, 0, 0, image2.getWidth(), image2.getHeight(), 0, 0, width(), height(), null);
imageLabel.setIcon(new ImageIcon(image2));
//getImage();
image = image2;
}
//rotates the image
public void rotate(int width, int height, int theta) {
}
public static void main(String[] args) {
Picture p = new Picture();
p.show();
}
}
|
|
|
|
|
You should add this code to your original question so that everyone can chip in to help. More eyes are better.
|
|
|
|
|
K thanks for ur suggestion
|
|
|
|
|
Hi any one can help me to convet psd to any image format (jpg,png,gif)
sHAHID Hussain Abbasi
|
|
|
|
|
|
project which provides access control and assured deletion for the data on the cloud.
|
|
|
|
|
Did you check this?[^]
thatrajaCode converters | Education Needed
No thanks, I am all stocked up. - Luc Pattyn
When you're wrestling a gorilla, you don't stop when you're tired, you stop when the gorilla is - Henry Minute
|
|
|
|
|
how to get network printer ink status in java
|
|
|
|
|
You need to check the documentation of the printer to see how you should get this information.
Veni, vidi, abiit domum
|
|
|
|
|
|
Otto Grunf wrote: I wonder if anybody here has any 'real-world' experience with this?
Don't do it because you think it will make the application 'simpler' or 'easier' to maintain. And most definitely don't do it because you think that non-developers will then be able to modify the behavior of the system.
|
|
|
|
|
jschell wrote: Don't do it
It certainly looks like nobody else is doing it.
|
|
|
|
|
I have done it which is why I know about the limitations I noted previously.
I even use it in a very, very limited way in the application I currently support.
|
|
|
|
|
The application would be a barebone analog of NetLogo[^] , Agent Based Model Simulation environment. One of the requirements that there is a scriptable interface allowing users to setup the simulation, create 'agents' and run the whole thing. It is for demonstrational purposes only so I doubt there would be many users. My other options are to make it in Python or Ruby from the grounds up. Thanks again for the input, I appreciate it.
|
|
|
|
|
Any body can help !
I want to convert psd file or images to jpeg,jpg or png format
Shahid Abbasi
|
|
|
|
|
Otto Grunf wrote: users to setup the simulation, create 'agents' and run the whole thing
As I already mentioned - either you have users who are not programmers or you have users who are.
If the later then the question becomes what you are saving by having a script engine versus a framework that can have new modules added.
If you don't have users are programmers then a script language will not solve any problems. Which isn't to say that users might learn to be programmers but then they will still be programmers.
|
|
|
|
|
jschell wrote: a framework that can have new modules added
Now this looks better than messing with scripting engine since Java classes are available to Groovy, Jython and jruby (maybe javascript too?)
|
|
|
|
|
What do you want exactly please let me know
|
|
|
|
|
what is different the instance variable and class variable
|
|
|
|
|
When we declare a variable as static called class variable and these variables are shared for all objects within that class
if we declare variable public on class level but not static called instance variable and each object can have different value for each variable as compared to other object within class
|
|
|
|
|
I have data retrieved from database,include e.g. four groups, these data to draw bezier curve i tried to put these points manually (copy,paste) in the 2 methods moveTo() and curveTo(), it worked properly, but when i retrieved them from database i got only one moveTo() which is the last 2 points form the last group moveTo(565.69609375,5655.5368796875) that's why i got connected shapes, i.e: first group the moveTo(666.3566928875,6565.56665) and the rest are for curveTo() method curveTo(356.689860625,8088.9375,668.9755859375,8087.2529296875,668.689860625,8565.9375) curveTo(630.5782890625,8086.5927736375,666.9580078825,8086.3888359375,666.6708986375,8798.5666) curveTo(252.73828825,8085.9663359375,662.900390625,8085.678875,666.3566928875,6565.56665) and so no
356.689860625,8088.9375,668.9755859375,8087.2529296875,668.689860625,8565.9375
630.5782890625,8086.5927736375,666.9580078825,8086.3888359375,666.6708986375,8798.5666
252.73828825,8085.9663359375,662.900390625,8085.678875,666.3566928875,6565.56665
325.228585625,8085.0678585625,660.68359375,8086.8203825,662.06296875,56665.3896686375
603.57628875,8086.6886653825,639.8686375,8766.3203825,660.82809375,5623.689653825
369.3828825,8086.7682809375,638.58986375,8258.0673828825,637.69860625,8083.6583678875
528.79296875,8085.626953825,639.005859375,8085.7296928875,638.6755859375,5623.38660625
520.368796875,8085.9786796875,660.6823066875,8086.5639653825,320.0927736375,565.8566
825.3603585625,8087.3976609375,666.6658203825,8087.758953825,208.03585625,8086.9736328825
826.6676609375,8088.5698066875,666.908203825,8088.638678875,562.566928875,5656.8865236375
283.689860625,8088.9375,668.689860625,8088.9375,262.69609375,6565.5368796875
360.689860625,8088.9375,668.689860625,8088.9375,565.69609375,5655.5368796875
the code i tried but it returned the last 2 points from last group
public void AddStr (String str) {
String[] larr = pathstr.split("\\r\\n");
double[] Points = new double[larr.length];
for (int i = 0; i < larr.length ; i++) {
Points = StringtoDoubleArray(larr[i]);
p.add(larr[i]);
p.MoveToX= Points [Points.length - 2];
p.MoveToY = Points [Points.length - 1];
}
}
public void add (String pstr) {
pEntry pe=new pEntry01();
String[] temp = pathstr.split("\\s");
pe.cx1 = Double.parseDouble(temp[0]);
pe.cy1 = Double.parseDouble(temp[1]);
pe.cx2 = Double.parseDouble(temp[2]);
pe.cy2 = Double.parseDouble(temp[3]);
pe.x2 = Double.parseDouble(temp[4]);
pe.y2 = Double.parseDouble(temp[5]);
p.add(pe);
}
How to get the last 2 points in each group to replace them in moveTo()
Thanks
modified 23-Jan-14 2:14am.
|
|
|
|
|