←Select platform

RemapHueCommand Constructor()

Summary

Initializes a new RemapHueCommand class object with default parameters.

Syntax
C#
VB
Objective-C
C++
Java
public RemapHueCommand() 
Public Function New() 
- (instancetype)init 
public RemapHueCommand() 
public: 
RemapHueCommand(); 

Example

Run the RemapHueCommand on an image and change all green hues (and hues near green).

C#
VB
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Color; 
 
public int INCREMENT_S2(int x, int Length) 
{ 
   return ((x + 1) % Length); 
} 
 
public int DECREMENT_S2(int x, int Length) 
{ 
   return ((x + (Length - 1)) % Length); 
} 
 
public int ADD_S2(int x, int y, int Length) 
{ 
   return ((x + y) % Length); 
} 
public void RemapHueCommandConstructorExample() 
{ 
   // Load an image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   RasterImage image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "cannon.jpg")); 
 
   // Prepare the command 
   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; 
   else 
      Length = (1 << image.BitsPerPixel); 
 
   //Allocate tables 
   int[] MaskTable = new int[Length]; 
   int[] HueTable = new int[Length]; 
 
   //Initialize tables 
   for (int i = 0; i < Length; i++) 
   { 
      MaskTable[i] = 0; 
      HueTable[i] = i; 
   } 
 
   //Get the hue for green 
   RasterHsvColor hsvRef = RasterHsvColor.FromRasterColor(new RasterColor(0, 255, 0)); 
 
   int HueGreen = hsvRef.H; 
 
   //Obtain new hue   
   hsvRef = RasterHsvColor.FromRasterColor(new RasterColor(255, 128, 0)); 
   int Change = (int)hsvRef.H - (int)HueGreen; 
   int HueChange = (Change > 0) ? (int)Change : (int)(Change + Length - 1); 
   HueGreen *= (Length - 1) / 255; 
   HueChange *= (Length - 1) / 255; 
 
   //Set values in HueTable, MaskTable  
   HueTable[HueGreen] = (HueTable[HueGreen] + HueChange); 
   MaskTable[HueGreen] = 1; 
 
   //set the hues near green (+/- 15) 
   int Count = (15 * (Length - 1)) / 255; 
   for (int i = INCREMENT_S2(HueGreen, Length); Count > 0; i = INCREMENT_S2(i, Length), Count--) 
   { 
      HueTable[i] = ADD_S2(HueTable[i], HueChange, Length); 
      MaskTable[i] = 1; 
   } 
 
   Count = (15 * (Length - 1)) / 255; 
   for (int i = DECREMENT_S2(HueGreen, Length); Count > 0; i = DECREMENT_S2(i, Length), Count--) 
   { 
      HueTable[i] = ADD_S2(HueTable[i], HueChange, Length); 
      MaskTable[i] = 1; 
   } 
 
   RemapHueCommand command = new RemapHueCommand(); 
   command.Mask = MaskTable; 
   command.HueTable = HueTable; 
   command.SaturationTable = null; 
   command.ValueTable = null; 
   command.LookUpTableLength = 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:\Users\Public\Documents\LEADTOOLS Images"; 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing.Color 
 
Public Function INCREMENT_S2(ByVal x As Integer, ByVal Length As Integer) As Integer 
   Return ((x + 1) Mod Length) 
End Function 
 
Public Function DECREMENT_S2(ByVal x As Integer, ByVal Length As Integer) As Integer 
   Return ((x + (Length - 1)) Mod Length) 
End Function 
 
Public Function ADD_S2(ByVal x As Integer, ByVal y As Integer, ByVal Length As Integer) As Integer 
   Return ((x + y) Mod Length) 
End Function 
Public Sub RemapHueCommandConstructorExample() 
   Dim codecs As New RasterCodecs() 
   codecs.ThrowExceptionsOnInvalidImages = True 
 
   Dim leadImage As RasterImage = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "cannon.jpg")) 
 
   ' Prepare the command 
   Dim Length As Integer 
   If (leadImage.BitsPerPixel >= 48) Then 
      Length = 65536 
   ElseIf (Not (leadImage.BitsPerPixel = 16 Or leadImage.BitsPerPixel = 12)) Then 
      Length = 256 
   ElseIf (IsNothing(leadImage.GetLookupTable) And leadImage.UseLookupTable) Then 
      Length = 256 
   Else 
      Length = (1 << leadImage.BitsPerPixel) 
   End If 
 
   Dim MaskTable() As Integer 
   Dim HueTable() As Integer 
   'Allocate tables 
   ReDim MaskTable(Length - 1) 
   ReDim HueTable(Length - 1) 
 
   Dim i As Integer 
   'Initialize tables 
   For i = 0 To Length - 1 
      MaskTable(i) = 0 
      HueTable(i) = i 
   Next 
 
   'Get the hue for green 
   Dim hsvRef As RasterHsvColor = RasterHsvColor.FromRasterColor(New RasterColor(0, 255, 0)) 
 
   Dim HueGreen As Integer 
   HueGreen = hsvRef.H 
 
   'Obtain new hue   
   hsvRef = RasterHsvColor.FromRasterColor(New RasterColor(255, 128, 0)) 
   Dim Change As Integer = hsvRef.H - HueGreen 
   Dim HueChange As Integer 
   If (Change > 0) Then 
      HueChange = Change 
   Else 
      HueChange = Change + Length - 1 
   End If 
 
   HueGreen = (HueGreen * (Length - 1)) \ 255 
   HueChange = (HueChange * (Length - 1)) \ 255 
 
   'Set values in HueTable, MaskTable  
   HueTable(HueGreen) = HueTable(HueGreen) + HueChange 
   MaskTable(HueGreen) = 1 
 
   'set the hues near green (+/- 15) 
   i = INCREMENT_S2(HueGreen, Length) 
 
   Dim Count As Integer 
   For Count = (15 * (Length - 1)) \ 255 To 1 Step -1 
      i = INCREMENT_S2(i, Length) 
      HueTable(i) = ADD_S2(HueTable(i), HueChange, Length) 
      MaskTable(i) = 1 
   Next 
 
   i = DECREMENT_S2(HueGreen, Length) 
 
   For Count = (15 * (Length - 1)) \ 255 To 1 Step -1 
 
      i = DECREMENT_S2(i, Length) 
      HueTable(i) = ADD_S2(HueTable(i), HueChange, Length) 
      MaskTable(i) = 1 
   Next 
   Dim command As RemapHueCommand = New RemapHueCommand 
   command.Mask = MaskTable 
   command.HueTable = HueTable 
   command.SaturationTable = Nothing 
   command.ValueTable = Nothing 
   command.LookUpTableLength = Length 
 
   command.Run(leadImage) 
   codecs.Save(leadImage, Path.Combine(LEAD_VARS.ImagesDir, "Result.jpg"), RasterImageFormat.Jpeg, 24) 
 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images" 
End Class 
c#[Silverlight C# Example] 
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.ImageProcessing.Color; 
using Leadtools.Examples; 
 
public int INCREMENT_S2(int x, int Length) 
{ 
   return ((x + 1) % Length); 
} 
 
public int DECREMENT_S2(int x, int Length) 
{ 
   return ((x + (Length - 1)) % Length); 
} 
 
public int ADD_S2(int x, int y, int Length) 
{ 
   return ((x + y) % Length); 
} 
public void RemapHueCommandConstructorExample(RasterImage image, Stream outStream) 
{ 
   // Prepare the command 
   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; 
   else 
      Length = (1 << image.BitsPerPixel); 
 
   //Allocate tables 
   int[] MaskTable = new int[Length]; 
   int[] HueTable = new int[Length]; 
 
   //Initialize tables 
   for (int i = 0; i < Length; i++) 
   { 
      MaskTable[i] = 0; 
      HueTable[i] = i; 
   } 
 
   //Get the hue for green 
   RasterHsvColor hsvRef = RasterHsvColor.FromRasterColor(new RasterColor(0, 255, 0)); 
 
   int HueGreen = hsvRef.H; 
 
   //Obtain new hue   
   hsvRef = RasterHsvColor.FromRasterColor(new RasterColor(255, 128, 0)); 
   int Change = (int)hsvRef.H - (int)HueGreen; 
   int HueChange = (Change > 0) ? (int)Change : (int)(Change + Length - 1); 
   HueGreen *= (Length - 1) / 255; 
   HueChange *= (Length - 1) / 255; 
 
   //Set values in HueTable, MaskTable  
   HueTable[HueGreen] = (HueTable[HueGreen] + HueChange); 
   MaskTable[HueGreen] = 1; 
 
   //set the hues near green (+/- 15) 
   int Count = (15 * (Length - 1)) / 255; 
   for (int i = INCREMENT_S2(HueGreen, Length); Count > 0; i = INCREMENT_S2(i, Length), Count--) 
   { 
      HueTable[i] = ADD_S2(HueTable[i], HueChange, Length); 
      MaskTable[i] = 1; 
   } 
 
   Count = (15 * (Length - 1)) / 255; 
   for (int i = DECREMENT_S2(HueGreen, Length); Count > 0; i = DECREMENT_S2(i, Length), Count--) 
   { 
      HueTable[i] = ADD_S2(HueTable[i], HueChange, Length); 
      MaskTable[i] = 1; 
   } 
 
   RemapHueCommand command = new RemapHueCommand(); 
   command.Mask = MaskTable; 
   command.HueTable = HueTable; 
   command.SaturationTable = null; 
   command.ValueTable = null; 
   command.LookUpTableLength = Length; 
   command.Run(image); 
 
   // Save result image 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.Save(image, outStream, RasterImageFormat.Jpeg, 24); 
   image.Dispose(); 
} 
vb[Silverlight VB Example] 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing.Color 
 
Public Function INCREMENT_S2(ByVal x As Integer, ByVal Length As Integer) As Integer 
   Return ((x + 1) Mod Length) 
End Function 
 
Public Function DECREMENT_S2(ByVal x As Integer, ByVal Length As Integer) As Integer 
   Return ((x + (Length - 1)) Mod Length) 
End Function 
 
Public Function ADD_S2(ByVal x As Integer, ByVal y As Integer, ByVal Length As Integer) As Integer 
   Return ((x + y) Mod Length) 
End Function 
Public Sub RemapHueCommandConstructorExample(ByVal image As RasterImage, ByVal outStream As Stream) 
   ' Prepare the command 
   Dim Length As Integer 
   If image.BitsPerPixel >= 48 Then 
      Length = &H10000 
   ElseIf Not (image.BitsPerPixel = 16 OrElse image.BitsPerPixel = 12) Then 
      Length = 256 
   ElseIf Not image.GetLookupTable() Is Nothing AndAlso image.UseLookupTable Then 
      Length = 256 
   Else 
      Length = (1 << image.BitsPerPixel) 
   End If 
 
   'Allocate tables 
   Dim MaskTable As Integer() = New Integer(Length - 1) {} 
   Dim HueTable As Integer() = New Integer(Length - 1) {} 
 
   'Initialize tables 
   Dim i As Integer = 0 
   Do While i < Length 
      MaskTable(i) = 0 
      HueTable(i) = i 
      i += 1 
   Loop 
 
   'Get the hue for green 
   Dim hsvRef As RasterHsvColor = RasterHsvColor.FromRasterColor(New RasterColor(0, 255, 0)) 
 
   Dim HueGreen As Integer = hsvRef.H 
 
   'Obtain new hue   
   hsvRef = RasterHsvColor.FromRasterColor(New RasterColor(255, 128, 0)) 
   Dim Change As Integer = CInt(hsvRef.H) - CInt(HueGreen) 
   Dim HueChange As Integer 
   If (Change > 0) Then 
      HueChange = CInt(Change) 
   Else 
      HueChange = CInt(Change + Length - 1) 
   End If 
   HueGreen *= (Length - 1) / 255 
   HueChange *= (Length - 1) / 255 
 
   'Set values in HueTable, MaskTable  
   HueTable(HueGreen) = (HueTable(HueGreen) + HueChange) 
   MaskTable(HueGreen) = 1 
 
   'set the hues near green (+/- 15) 
   Dim Count As Integer = (15 * (Length - 1)) / 255 
   i = INCREMENT_S2(HueGreen, Length) 
   Do While Count > 0 
      HueTable(i) = ADD_S2(HueTable(i), HueChange, Length) 
      MaskTable(i) = 1 
      i = INCREMENT_S2(i, Length) 
      Count -= 1 
   Loop 
 
   Count = (15 * (Length - 1)) / 255 
   i = DECREMENT_S2(HueGreen, Length) 
   Do While Count > 0 
      HueTable(i) = ADD_S2(HueTable(i), HueChange, Length) 
      MaskTable(i) = 1 
      i = DECREMENT_S2(i, Length) 
      Count -= 1 
   Loop 
 
   Dim command As RemapHueCommand = New RemapHueCommand() 
   command.Mask = MaskTable 
   command.HueTable = HueTable 
   command.SaturationTable = Nothing 
   command.ValueTable = Nothing 
   command.LookUpTableLength = Length 
   command.Run(image) 
 
   ' Save result image 
   Dim codecs As RasterCodecs = New RasterCodecs() 
   codecs.Save(image, outStream, RasterImageFormat.Jpeg, 24) 
   image.Dispose() 
End Sub 

Requirements

Target Platforms

Help Version 20.0.2020.4.2
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2020 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.ImageProcessing.Color Assembly