Difference between revisions of "Example Color Space"

From BoofCV
Jump to navigationJump to search
m
m
 
(3 intermediate revisions by the same user not shown)
Line 2: Line 2:


Example Code:
Example Code:
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.23/examples/src/boofcv/examples/imageprocessing/ExampleColorSpace.java ExampleColorSpace.java]
* [https://github.com/lessthanoptimal/BoofCV/blob/v0.40/examples/src/main/java/boofcv/examples/imageprocessing/ExampleColorSpace.java ExampleColorSpace.java]


Concepts:
Concepts:
Line 9: Line 9:
Relevant Examples:
Relevant Examples:
* [[Example_Color_Segmentation| Color Segmentation]]
* [[Example_Color_Segmentation| Color Segmentation]]
Relevant Applets:
* [[Applet Color Space| Color Space]]


= Example Code =
= Example Code =
Line 23: Line 20:
  */
  */
public class ExampleColorSpace {
public class ExampleColorSpace {
 
public static void main( String[] args ) {
public static void main( String args[] ) {
BufferedImage image = UtilImageIO.loadImageNotNull(UtilIO.pathExample("sunflowers.jpg"));
BufferedImage image = UtilImageIO.loadImage(UtilIO.pathExample("sunflowers.jpg"));


// Convert input image into a BoofCV RGB image
// Convert input image into a BoofCV RGB image
Planar<GrayF32> rgb = ConvertBufferedImage.convertFromMulti(image, null,true, GrayF32.class);
Planar<GrayF32> rgb = ConvertBufferedImage.convertFromPlanar(image, null, true, GrayF32.class);


//---- convert RGB image into different color formats
//---- convert RGB image into different color formats
Planar<GrayF32> hsv = rgb.createSameShape();
Planar<GrayF32> hsv = rgb.createSameShape();
ColorHsv.rgbToHsv_F32(rgb, hsv);
ColorHsv.rgbToHsv(rgb, hsv);


Planar<GrayF32> yuv = rgb.createSameShape();
Planar<GrayF32> yuv = rgb.createSameShape();
ColorYuv.yuvToRgb_F32(rgb, yuv);
ColorYuv.yuvToRgb(rgb, yuv);


//---- Convert individual pixels into different formats
//---- Convert individual pixels into different formats
float[] pixelHsv = new float[3];
float[] pixelHsv = new float[3];
ColorHsv.rgbToHsv(10,50.6f,120,pixelHsv);
ColorHsv.rgbToHsv(10, 50.6f, 120, pixelHsv);
System.out.printf("Found RGB->HSV = %5.2f %5.3f %5.1f\n",pixelHsv[0],pixelHsv[1],pixelHsv[2]);
System.out.printf("Found RGB->HSV = %5.2f %5.3f %5.1f\n", pixelHsv[0], pixelHsv[1], pixelHsv[2]);


float[] pixelRgb = new float[3];
float[] pixelRgb = new float[3];
ColorHsv.hsvToRgb(pixelHsv[0],pixelHsv[1],pixelHsv[2],pixelRgb);
ColorHsv.hsvToRgb(pixelHsv[0], pixelHsv[1], pixelHsv[2], pixelRgb);
System.out.printf("Found HSV->RGB = %5.1f %5.1f %5.1f expected 10 50.6 120\n",
System.out.printf("Found HSV->RGB = %5.1f %5.1f %5.1f expected 10 50.6 120\n",
pixelRgb[0],pixelRgb[1],pixelRgb[2]);
pixelRgb[0], pixelRgb[1], pixelRgb[2]);


float[] pixelYuv = new float[3];
float[] pixelYuv = new float[3];
ColorYuv.rgbToYuv(10,50.6f,120,pixelYuv);
ColorYuv.rgbToYuv(10, 50.6f, 120, pixelYuv);
System.out.printf("Found RGB->YUV = %5.1f %5.1f %5.1f\n",pixelYuv[0],pixelYuv[1],pixelYuv[2]);
System.out.printf("Found RGB->YUV = %5.1f %5.1f %5.1f\n", pixelYuv[0], pixelYuv[1], pixelYuv[2]);


ColorYuv.yuvToRgb(pixelYuv[0],pixelYuv[1],pixelYuv[2],pixelRgb);
ColorYuv.yuvToRgb(pixelYuv[0], pixelYuv[1], pixelYuv[2], pixelRgb);
System.out.printf("Found YUV->RGB = %5.1f %5.1f %5.1f expected 10 50.6 120\n",
System.out.printf("Found YUV->RGB = %5.1f %5.1f %5.1f expected 10 50.6 120\n",
pixelRgb[0],pixelRgb[1],pixelRgb[2]);
pixelRgb[0], pixelRgb[1], pixelRgb[2]);
}
}
}
}
</syntaxhighlight>
</syntaxhighlight>

Latest revision as of 14:58, 17 January 2022

Example of how to convert between different color spaces in BoofCV. Either the whole image can be converted or individual values.

Example Code:

Concepts:

  • Color space

Relevant Examples:

Example Code

/**
 * Simple demonstration for converting between color spaces in BoofCV. Currently RGB, YUV, HSV, and YCbCr are
 * supported.
 *
 * @author Peter Abeles
 */
public class ExampleColorSpace {
	public static void main( String[] args ) {
		BufferedImage image = UtilImageIO.loadImageNotNull(UtilIO.pathExample("sunflowers.jpg"));

		// Convert input image into a BoofCV RGB image
		Planar<GrayF32> rgb = ConvertBufferedImage.convertFromPlanar(image, null, true, GrayF32.class);

		//---- convert RGB image into different color formats
		Planar<GrayF32> hsv = rgb.createSameShape();
		ColorHsv.rgbToHsv(rgb, hsv);

		Planar<GrayF32> yuv = rgb.createSameShape();
		ColorYuv.yuvToRgb(rgb, yuv);

		//---- Convert individual pixels into different formats
		float[] pixelHsv = new float[3];
		ColorHsv.rgbToHsv(10, 50.6f, 120, pixelHsv);
		System.out.printf("Found RGB->HSV = %5.2f %5.3f %5.1f\n", pixelHsv[0], pixelHsv[1], pixelHsv[2]);

		float[] pixelRgb = new float[3];
		ColorHsv.hsvToRgb(pixelHsv[0], pixelHsv[1], pixelHsv[2], pixelRgb);
		System.out.printf("Found HSV->RGB = %5.1f %5.1f %5.1f expected 10 50.6 120\n",
				pixelRgb[0], pixelRgb[1], pixelRgb[2]);

		float[] pixelYuv = new float[3];
		ColorYuv.rgbToYuv(10, 50.6f, 120, pixelYuv);
		System.out.printf("Found RGB->YUV = %5.1f %5.1f %5.1f\n", pixelYuv[0], pixelYuv[1], pixelYuv[2]);

		ColorYuv.yuvToRgb(pixelYuv[0], pixelYuv[1], pixelYuv[2], pixelRgb);
		System.out.printf("Found YUV->RGB = %5.1f %5.1f %5.1f expected 10 50.6 120\n",
				pixelRgb[0], pixelRgb[1], pixelRgb[2]);
	}
}