Results 1 to 1 of 1
- 01-20-2011, 12:35 PM #1
Member
- Join Date
- Jan 2011
- Posts
- 11
- Rep Power
- 0
problem with combining RGB binary images
hi. im doing an edge detection which will detect edges of each RGB channel and then combine them to show it as a final output. im now having a problem with combining the three as it doesnt show me a binary image, instead it has some colors on it. i have checked each binary image of the RGB and it works fine which gives the black and white image. to be clearer, following is the code:
this is the sample image:Java Code:private void processActionPerformed(java.awt.event.ActionEvent evt) { width = inputimage.getWidth(null); height = inputimage.getHeight(null); inputbuff = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB); Graphics r = inputbuff.getGraphics(); r.drawImage(inputimage, 0, 0, null); r.dispose(); process_red = new int[width * height]; process_green = new int[width * height]; process_blue = new int[width * height]; process_grey = new int[width * height]; process_rgb = new int[width * height]; process_combine = new int[width * height]; for (int i = 0; i < 256; i++) { freq_red[i] = freq_green[i] = freq_blue[i] = freq_grey[i] = 0; } for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { int clr = inputbuff.getRGB(y, x); int red = (clr & 0x00ff0000) >> 16; int green = (clr & 0x0000ff00) >> 8; int blue = clr & 0x000000ff; int grey = (11 * red + 16 * green + 5 * blue) / 32; freq_red[red] += 1; freq_green[green] += 1; freq_blue[blue] += 1; freq_grey[grey] += 1; } } int threshold = 150; for (int i = 0; i < 256; i++) { freq_red[i] = applyThreshold(threshold, freq_red[i]); freq_green[i] = applyThreshold(threshold, freq_green[i]); freq_blue[i] = applyThreshold(threshold, freq_blue[i]); freq_grey[i] = applyThreshold(threshold, freq_grey[i]); } for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { int clr = inputbuff.getRGB(y, x); int red = (clr & 0x00ff0000) >> 16; int green = (clr & 0x0000ff00) >> 8; int blue = clr & 0x000000ff; int grey = (11 * red + 16 * green + 5 * blue) / 32; red = freq_red[red]; green = freq_green[green]; blue = freq_blue[blue]; grey = freq_grey[grey]; int alpha = 0xff000000; int combine = alpha | (red <<16) |(green <<8)|blue; process_red[x * height + y] = (0xFF<<24)|(red<<16)|(red<<8)|red; process_green[x * height + y] = (0xFF<<24)|(green<<16)|(green<<8)|green; process_blue[x * height + y] = (0xFF<<24)|(blue<<16)|(blue<<8)|blue; process_grey[x * height + y] = (0xFF<<24)|(grey<<16)|(grey<<8)|grey; process_rgb[x * height + y] = clr; process_combine[x * height + y] = combine; } } image_red = new JFrame().createImage(new MemoryImageSource(width, height, process_red, 0, width)); image_green = new JFrame().createImage(new MemoryImageSource(width, height, process_green, 0, width)); image_blue = new JFrame().createImage(new MemoryImageSource(width, height, process_blue, 0, width)); image_grey = new JFrame().createImage(new MemoryImageSource(width, height, process_grey, 0, width)); image_rgb = new JFrame().createImage(new MemoryImageSource(width, height, process_rgb, 0, width)); image_combine = new JFrame().createImage(new MemoryImageSource(width, height, process_combine, 0, width)); buff_red = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB); buff_green = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB); buff_blue = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB); buff_grey = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB); buff_rgb = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB); buff_combine = new BufferedImage(width,height, BufferedImage.TYPE_INT_RGB); graph_red = buff_red.getGraphics(); graph_green = buff_green.getGraphics(); graph_blue = buff_blue.getGraphics(); graph_grey = buff_grey.getGraphics(); graph_rgb = buff_rgb.getGraphics(); graph_combine = buff_combine.getGraphics(); graph_red.drawImage(image_red, 0, 0, null); graph_green.drawImage(image_green, 0, 0, null); graph_blue.drawImage(image_blue, 0, 0, null); graph_grey.drawImage(image_grey, 0, 0, null); graph_rgb.drawImage(image_rgb, 0, 0, null); graph_combine.drawImage(image_combine, 0, 0, null); graph_red.dispose(); graph_green.dispose(); graph_blue.dispose(); graph_grey.dispose(); graph_rgb.dispose(); graph_combine.dispose(); repaint(); }

i suspected that the problem is with the alpha value:
however, when i removed the alpha value it doesnt display anything. can anyone please help me? thanks in advance!Java Code:int alpha = 0xff000000; int combine = alpha | (red <<16) | (green <<8)|blue;
Last edited by meth; 01-20-2011 at 12:59 PM. Reason: add sample image
Similar Threads
-
Combining these 2 projects
By fresh83 in forum New To JavaReplies: 14Last Post: 12-28-2009, 08:52 AM -
combining two separate codes into one
By jaiminparikh in forum Advanced JavaReplies: 22Last Post: 02-18-2009, 05:35 PM -
convert binary to images
By fiqueudrue in forum New To JavaReplies: 3Last Post: 02-12-2009, 09:16 AM -
Help. Binary Search Problem
By Krooger in forum Advanced JavaReplies: 1Last Post: 11-03-2008, 06:19 AM -
Help combining loops into 1 program.
By kewlgeye in forum New To JavaReplies: 5Last Post: 04-22-2008, 09:58 AM


LinkBack URL
About LinkBacks
Reply With Quote
Bookmarks