Difference between revisions of "Example Image Enhancement"

From BoofCV
Jump to navigationJump to search
(Updated for v0.16)
m
Line 10: Line 10:


Example Code:
Example Code:
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.16/examples/src/boofcv/examples/enhance/ExampleImageEnhancement.java ExampleImageEnhancement.java]
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.19/examples/src/boofcv/examples/enhance/ExampleImageEnhancement.java ExampleImageEnhancement.java]


Concepts:
Concepts:
Line 37: Line 37:
BufferedImage buffered = UtilImageIO.loadImage("../data/applet/enhance/dark.jpg");
BufferedImage buffered = UtilImageIO.loadImage("../data/applet/enhance/dark.jpg");
ImageUInt8 gray = ConvertBufferedImage.convertFrom(buffered,(ImageUInt8)null);
ImageUInt8 gray = ConvertBufferedImage.convertFrom(buffered,(ImageUInt8)null);
ImageUInt8 adjusted = new ImageUInt8(gray.width, gray.height);
ImageUInt8 adjusted = gray.createSameShape();


int histogram[] = new int[256];
int histogram[] = new int[256];
Line 55: Line 55:


panel.setPreferredSize(new Dimension(gray.width,gray.height));
panel.setPreferredSize(new Dimension(gray.width,gray.height));
ShowImages.showWindow(panel,"Histogram");
ShowImages.showWindow(panel,"Histogram",true);
}
}


Line 65: Line 65:
BufferedImage buffered = UtilImageIO.loadImage("../data/applet/enhance/dark.jpg");
BufferedImage buffered = UtilImageIO.loadImage("../data/applet/enhance/dark.jpg");
ImageUInt8 gray = ConvertBufferedImage.convertFrom(buffered,(ImageUInt8)null);
ImageUInt8 gray = ConvertBufferedImage.convertFrom(buffered,(ImageUInt8)null);
ImageUInt8 adjusted = new ImageUInt8(gray.width, gray.height);
ImageUInt8 adjusted = gray.createSameShape();




Line 79: Line 79:


panel.setPreferredSize(new Dimension(gray.width,gray.height));
panel.setPreferredSize(new Dimension(gray.width,gray.height));
ShowImages.showWindow(panel,"Sharpen");
ShowImages.showWindow(panel,"Sharpen",true);
}
}



Revision as of 21:13, 15 September 2015

Demonstration of different image enhancement operations. If an image is excessively dark or light the visibility of features can be improved by adjusting its histogram. Another technique makes the edges in an image more pronounced by.

Example Code:

Concepts:

  • Visibility

Relevant Applets:

Example Code

/**
 * Demonstration of various ways an image can be "enhanced".  Image enhancement typically refers to making it easier
 * for people to view the image and pick out its details.
 *
 * @author Peter Abeles
 */
public class ExampleImageEnhancement {

	/**
	 * Histogram adjustment algorithms aim to spread out pixel intensity values uniformly across the allowed range.
	 * This if an image is dark, it will have greater contrast and be brighter.
	 */
	public static void histogram() {
//		BufferedImage buffered = UtilImageIO.loadImage("../data/applet/enhance/dull.jpg");
		BufferedImage buffered = UtilImageIO.loadImage("../data/applet/enhance/dark.jpg");
		ImageUInt8 gray = ConvertBufferedImage.convertFrom(buffered,(ImageUInt8)null);
		ImageUInt8 adjusted = gray.createSameShape();

		int histogram[] = new int[256];
		int transform[] = new int[256];

		ListDisplayPanel panel = new ListDisplayPanel();

		ImageStatistics.histogram(gray,histogram);
		EnhanceImageOps.equalize(histogram, transform);
		EnhanceImageOps.applyTransform(gray, transform, adjusted);
		panel.addImage(ConvertBufferedImage.convertTo(adjusted,null),"Global");

		EnhanceImageOps.equalizeLocal(gray, 50, adjusted, histogram, transform);
		panel.addImage(ConvertBufferedImage.convertTo(adjusted,null),"Local");

		panel.addImage(ConvertBufferedImage.convertTo(gray,null),"Original");

		panel.setPreferredSize(new Dimension(gray.width,gray.height));
		ShowImages.showWindow(panel,"Histogram",true);
	}

	/**
	 * When an image is sharpened the intensity of edges are made more extreme while flat regions remain unchanged.
	 */
	public static void sharpen() {
//		BufferedImage buffered = UtilImageIO.loadImage("../data/applet/enhance/dull.jpg");
		BufferedImage buffered = UtilImageIO.loadImage("../data/applet/enhance/dark.jpg");
		ImageUInt8 gray = ConvertBufferedImage.convertFrom(buffered,(ImageUInt8)null);
		ImageUInt8 adjusted = gray.createSameShape();


		ListDisplayPanel panel = new ListDisplayPanel();

		EnhanceImageOps.sharpen4(gray, adjusted);
		panel.addImage(ConvertBufferedImage.convertTo(adjusted,null),"Sharpen-4");

		EnhanceImageOps.sharpen8(gray, adjusted);
		panel.addImage(ConvertBufferedImage.convertTo(adjusted,null),"Sharpen-8");

		panel.addImage(ConvertBufferedImage.convertTo(gray,null),"Original");

		panel.setPreferredSize(new Dimension(gray.width,gray.height));
		ShowImages.showWindow(panel,"Sharpen",true);
	}

	public static void main( String args[] )
	{
		histogram();
		sharpen();
	}

}