7 #include "ColorImage.h"
11 ColorImage::ColorImage(ImageType type) :
ImageBase(type)
15 ColorImage::~ColorImage()
26 BinaryImage *ColorImage::ComputeThreshold(ColorMode colorMode,
32 Range range1 = {low1, high1},
33 range2 = {low2, high2},
34 range3 = {low3, high3};
36 int success = imaqColorThreshold(result->
GetImaqImage(), m_imaqImage, 1, colorMode, &range1, &range2, &range3);
37 wpi_setImaqErrorWithContext(success,
"ImaqThreshold error");
53 return ComputeThreshold(IMAQ_RGB, redLow, redHigh, greenLow, greenHigh, blueLow, blueHigh);
63 return ComputeThreshold(IMAQ_RGB, t.plane1Low, t.plane1High,
64 t.plane2Low, t.plane2High,
65 t.plane3Low, t.plane3High);
80 return ComputeThreshold(IMAQ_HSL, hueLow, hueHigh, saturationLow, saturationHigh, luminenceLow, luminenceHigh);
90 return ComputeThreshold(IMAQ_HSL, t.plane1Low, t.plane1High,
91 t.plane2Low, t.plane2High,
92 t.plane3Low, t.plane3High);
107 return ComputeThreshold(IMAQ_HSV, hueLow, hueHigh, saturationLow, saturationHigh, valueLow, valueHigh);
117 return ComputeThreshold(IMAQ_HSV, t.plane1Low, t.plane1High,
118 t.plane2Low, t.plane2High,
119 t.plane3Low, t.plane3High);
134 return ComputeThreshold(IMAQ_HSI, hueLow, hueHigh, saturationLow, saturationHigh, intensityLow, intensityHigh);
144 return ComputeThreshold(IMAQ_HSI, t.plane1Low, t.plane1High,
145 t.plane2Low, t.plane2High,
146 t.plane3Low, t.plane3High);
155 MonoImage *ColorImage::ExtractColorPlane(ColorMode mode,
int planeNumber)
158 if (m_imaqImage == NULL)
159 wpi_setWPIError(NullParameter);
160 int success = imaqExtractColorPlanes(m_imaqImage,
165 wpi_setImaqErrorWithContext(success,
"Imaq ExtractColorPlanes failed");
174 MonoImage *ColorImage::ExtractFirstColorPlane(ColorMode mode)
176 return ExtractColorPlane(mode, 1);
184 MonoImage *ColorImage::ExtractSecondColorPlane(ColorMode mode)
186 return ExtractColorPlane(mode, 2);
194 MonoImage *ColorImage::ExtractThirdColorPlane(ColorMode mode)
196 return ExtractColorPlane(mode, 3);
205 return ExtractFirstColorPlane(IMAQ_RGB);
214 return ExtractSecondColorPlane(IMAQ_RGB);
223 return ExtractThirdColorPlane(IMAQ_RGB);
232 return ExtractFirstColorPlane(IMAQ_HSL);
241 return ExtractFirstColorPlane(IMAQ_HSV);
250 return ExtractFirstColorPlane(IMAQ_HSI);
257 MonoImage *ColorImage::GetLuminancePlane()
259 return ExtractThirdColorPlane(IMAQ_HSL);
268 return ExtractThirdColorPlane(IMAQ_HSV);
275 MonoImage *ColorImage::GetIntensityPlane()
277 return ExtractThirdColorPlane(IMAQ_HSI);
287 void ColorImage::ReplacePlane(ColorMode mode,
MonoImage *plane,
int planeNumber) {
288 int success = imaqReplaceColorPlanes(m_imaqImage,
289 (
const Image*) m_imaqImage,
294 wpi_setImaqErrorWithContext(success,
"Imaq ReplaceColorPlanes failed");
302 void ColorImage::ReplaceFirstColorPlane(ColorMode mode,
MonoImage *plane)
304 ReplacePlane(mode, plane, 1);
312 void ColorImage::ReplaceSecondColorPlane(ColorMode mode,
MonoImage *plane)
314 ReplacePlane(mode, plane, 2);
322 void ColorImage::ReplaceThirdColorPlane(ColorMode mode,
MonoImage *plane)
324 ReplacePlane(mode, plane, 3);
334 ReplaceFirstColorPlane(IMAQ_RGB, plane);
344 ReplaceSecondColorPlane(IMAQ_RGB, plane);
354 ReplaceThirdColorPlane(IMAQ_RGB, plane);
365 return ReplaceFirstColorPlane(IMAQ_HSL, plane);
375 return ReplaceFirstColorPlane(IMAQ_HSV, plane);
385 return ReplaceFirstColorPlane(IMAQ_HSI, plane);
395 return ReplaceSecondColorPlane(IMAQ_HSL, plane);
405 return ReplaceSecondColorPlane(IMAQ_HSV, plane);
415 return ReplaceSecondColorPlane(IMAQ_HSI, plane);
425 return ReplaceThirdColorPlane(IMAQ_HSL, plane);
435 return ReplaceThirdColorPlane(IMAQ_HSV, plane);
445 return ReplaceThirdColorPlane(IMAQ_HSI, plane);
450 void ColorImage::Equalize(
bool allPlanes)
453 int success = imaqColorEqualize(m_imaqImage, (
const Image*) m_imaqImage, (allPlanes) ? TRUE : FALSE);
454 wpi_setImaqErrorWithContext(success,
"Imaq ColorEqualize error");
457 void ColorImage::ColorEqualize()
462 void ColorImage::LuminanceEqualize()
void ReplaceGreenPlane(MonoImage *plane)
void ReplaceLuminancePlane(MonoImage *plane)
void ReplaceHSIHuePlane(MonoImage *plane)
void ReplaceHSVSaturationPlane(MonoImage *plane)
BinaryImage * ThresholdHSI(int hueLow, int hueHigh, int saturationLow, int saturationHigh, int intensityLow, int intensityHigh)
BinaryImage * ThresholdHSV(int hueLow, int hueHigh, int saturationLow, int saturationHigh, int valueHigh, int valueLow)
void ReplaceHSLHuePlane(MonoImage *plane)
void ReplaceHSLSaturationPlane(MonoImage *plane)
void ReplaceBluePlane(MonoImage *plane)
BinaryImage * ThresholdHSL(int hueLow, int hueHigh, int saturationLow, int saturationHigh, int luminenceLow, int luminenceHigh)
void ReplaceHSISaturationPlane(MonoImage *plane)
void ReplaceValuePlane(MonoImage *plane)
void ReplaceIntensityPlane(MonoImage *plane)
void ReplaceHSVHuePlane(MonoImage *plane)
BinaryImage * ThresholdRGB(int redLow, int redHigh, int greenLow, int greenHigh, int blueLow, int blueHigh)
void ReplaceRedPlane(MonoImage *plane)