Leadtools.ImageProcessing.Color Send comments on this topic. | Back to Introduction - All Topics | Help Version 16.5.9.25
RemapHueCommand Constructor()
See Also  Example



Initializes a new RemapHueCommand class object with default parameters.

Syntax

Visual Basic (Declaration) 
Public Function New()
Visual Basic (Usage)Copy Code
Dim instance As RemapHueCommand()
C# 
public RemapHueCommand()
C++/CLI 
public:
RemapHueCommand();

Example

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

Visual BasicCopy Code
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()
   RasterCodecs.Startup()
   Dim codecs As New RasterCodecs()
   codecs.ThrowExceptionsOnInvalidImages = True

   Dim leadImage As RasterImage = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "Master.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, LeadtoolsExamples.Common.ImagesPath.Path + "Result.jpg", RasterImageFormat.Jpeg, 24)

   RasterCodecs.Shutdown()
End Sub
C#Copy Code
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.Startup(); 
   RasterCodecs codecs = new RasterCodecs(); 
   codecs.ThrowExceptionsOnInvalidImages = true; 
 
   RasterImage image = codecs.Load(LeadtoolsExamples.Common.ImagesPath.Path + "Master.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, LeadtoolsExamples.Common.ImagesPath.Path + "Result.jpg", RasterImageFormat.Jpeg, 24); 
 
   RasterCodecs.Shutdown(); 
}

Requirements

Target Platforms: Microsoft .NET Framework 2.0, Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also