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




Initializes a new RemapHueCommand class object with default parameters.

Overload List

OverloadDescription
RemapHueCommand Constructor() Initializes a new RemapHueCommand class object with default parameters.  
RemapHueCommand Constructor(Int32[],Int32[],Int32[],Int32[],Int32) Initializes a new RemapHueCommand class object with explicit parameters.  

Example

Visual BasicCopy Code
ImageProcessing.Color.RemapHueCommandCommand.RemapHueCommandConstructor
   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("C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\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, "C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\Result.jpg", RasterImageFormat.Jpeg, 24)

      RasterCodecs.Shutdown()
   End Sub
C#Copy Code
ImageProcessing.Color.RemapHueCommandCommand.RemapHueCommandConstructor 
      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(@"C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\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, @"C:\Program Files\LEAD Technologies\LEADTOOLS 15\Images\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