public int[] HueTable { get; set; } @property (nonatomic, assign, nullable) const unsigned int *hueTable; public int[ getHueTable();public void setHueTable(int[] int[Value);
HueTable # get and set (RemapHueCommand)
Hue look up table. If the Mask table value for a particular pixel hue is non-zero, then the hue is changed to the corresponding entry in the HueTable property. For example, if a pixel value has a hue of 85 and Mask[85] is non-zero, the hue is changed to HueTable[85]. If HueTable is null, the hue of each pixel is unchanged.
using Leadtools;using Leadtools.Codecs;using Leadtools.ImageProcessing.Color;public int INCREMENT_S1(int x, int Length){return ((x + 1) % Length);}public int DECREMENT_S1(int x, int Length){return ((x + (Length - 1)) % Length);}public int ADD_S1(int x, int y, int Length){return ((x + y) % Length);}public void RemapHueCommandCommandExample(){// Load an imageRasterCodecs codecs = new RasterCodecs();codecs.ThrowExceptionsOnInvalidImages = true;RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "cannon.jpg"));// Prepare the commandint[] MaskTable;int[] HueTable;RasterHsvColor hsvRef;int HueGreen, HueChange;int Change;int i, Count;int Length;if (image.BitsPerPixel >= 48)Length = 0x10000;else if (!(image.BitsPerPixel == 16 || image.BitsPerPixel == 12))Length = 256;else if (image.GetLookupTable() != null && image.UseLookupTable)Length = 256;elseLength = (1 << image.BitsPerPixel);//Allocate tablesMaskTable = new int[Length];HueTable = new int[Length];//Initialize tablesfor (i = 0; i < Length; i++){MaskTable[i] = 0;HueTable[i] = i;}//Get the hue for greenhsvRef = RasterHsvColor.FromRasterColor(new RasterColor(0, 255, 0));HueGreen = hsvRef.H;//Obtain new huehsvRef = RasterHsvColor.FromRasterColor(new RasterColor(255, 128, 0));Change = (int)hsvRef.H - (int)HueGreen;HueChange = (Change > 0) ? (int)Change : (int)(Change + Length - 1);HueGreen *= (Length - 1) / 255;HueChange *= (Length - 1) / 255;//Set values in HueTable, MaskTableHueTable[HueGreen] = (HueTable[HueGreen] + HueChange);MaskTable[HueGreen] = 1;//set the hues near green (+/- 15)Count = (15 * (Length - 1)) / 255;for (i = INCREMENT_S1(HueGreen, Length); Count > 0; i = INCREMENT_S1(i, Length), Count--){HueTable[i] = ADD_S1(HueTable[i], HueChange, Length);MaskTable[i] = 1;}Count = (15 * (Length - 1)) / 255;for (i = DECREMENT_S1(HueGreen, Length); Count > 0; i = DECREMENT_S1(i, Length), Count--){HueTable[i] = ADD_S1(HueTable[i], HueChange, Length);MaskTable[i] = 1;}RemapHueCommand command = new RemapHueCommand(MaskTable, HueTable, null, null, Length);command.Run(image);codecs.Save(image, Path.Combine(LEAD_VARS.ImagesDir, "Result.jpg"), RasterImageFormat.Jpeg, 24);}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";}
import static org.junit.Assert.assertTrue;import java.io.File;import java.io.IOException;import org.junit.*;import org.junit.runner.JUnitCore;import org.junit.runner.Result;import org.junit.runner.notification.Failure;import leadtools.*;import leadtools.codecs.*;import leadtools.imageprocessing.color.*;public int INCREMENT_S1(int x, int Length) {return ((x + 1) % Length);}public int DECREMENT_S1(int x, int Length) {return ((x + (Length - 1)) % Length);}public int ADD_S1(int x, int y, int Length) {return ((x + y) % Length);}public void remapHueCommandCommandExample() {final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";// Load an imageRasterCodecs codecs = new RasterCodecs();codecs.setThrowExceptionsOnInvalidImages(true);RasterImage image = codecs.load(combine(LEAD_VARS_IMAGES_DIR, "cannon.jpg"));// Prepare the commandint length;if (image.getBitsPerPixel() >= 48)length = 0x10000;else if (!(image.getBitsPerPixel() == 16 || image.getBitsPerPixel() == 12))length = 256;else if (image.getLookupTable() != null && image.getUseLookupTable())length = 256;elselength = (1 << image.getBitsPerPixel());// Allocate tablesint[] maskTable = new int[length];int[] hueTable = new int[length];// Initialize tablesfor (int i = 0; i < length; i++) {maskTable[i] = 0;hueTable[i] = i;}// Get the hue for greenRasterHsvColor hsvRef = RasterHsvColor.fromRasterColor(new RasterColor(0, 255, 0));int hueGreen = hsvRef.getH();// Obtain new huehsvRef = RasterHsvColor.fromRasterColor(new RasterColor(255, 128, 0));int change = (int) hsvRef.getH() - (int) hueGreen;int hueChange = (change > 0) ? (int) change : (int) (change + length - 1);hueGreen *= (length - 1) / 255;hueChange *= (length - 1) / 255;// Set values in HueTable, MaskTablehueTable[hueGreen] = (hueTable[hueGreen] + hueChange);maskTable[hueGreen] = 1;// Set the hues near green (+/- 15)int count = (15 * (length - 1)) / 255;for (int i = INCREMENT_S1(hueGreen, length); count > 0; i = INCREMENT_S1(i, length), count--) {hueTable[i] = ADD_S1(hueTable[i], hueChange, length);maskTable[i] = 1;}count = (15 * (length - 1)) / 255;for (int i = DECREMENT_S1(hueGreen, length); count > 0; i = DECREMENT_S1(i, length), count--) {hueTable[i] = ADD_S1(hueTable[i], hueChange, length);maskTable[i] = 1;}RemapHueCommand command = new RemapHueCommand();command.setMask(maskTable);command.setHueTable(hueTable);command.setSaturationTable(null);command.setValueTable(null);command.setLookUpTableLength(length);command.run(image);codecs.save(image, combine(LEAD_VARS_IMAGES_DIR, "Result.jpg"), RasterImageFormat.JPEG, 24);System.out.println("Command run and image saved to " + combine(LEAD_VARS_IMAGES_DIR, "Result.jpg"));assertTrue("Command run and image saved", (new File(combine(LEAD_VARS_IMAGES_DIR, "Result.jpg")).exists()));}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
