Beispiel #1
0
void Conversions::ToColor(Image& Source, Image& Dest)
{
   CheckSizeAndType(Source, Dest);
   Check1Channel(Source);

   switch (Dest.NbChannels())
   {
   case 1:
      Copy(Source, Dest);
      break;
   case 2:
      Kernel(to_2channels, Source, Dest, Source.Step(), Dest.Step());
      break;
   case 3:
      Kernel(to_3channels, Source, Dest, Source.Step(), Dest.Step());
      break;
   case 4:
      Kernel(to_4channels, Source, Dest, Source.Step(), Dest.Step());
      break;
   default:
      throw cl::Error(CL_INVALID_ARG_VALUE, "Wrong ChannelNo in Conversions::SelectChannel() - allowed values : 1 to 4");
   }

   // select_channel1 does what we want
   Kernel(select_channel1, Source, Dest);
}
Beispiel #2
0
void Conversions::ToGray(Image& Source, Image& Dest)
{
   CheckSizeAndType(Source, Dest);
   Check1Channel(Dest);

   Kernel(to_gray, Source, Dest, Source.Step(), Dest.Step());
}
Beispiel #3
0
void Conversions::Copy4Cto3C(Image& Source, Image& Dest)
{
   CheckSizeAndType(Source, Dest);

   if (Source.NbChannels() != 4)
      throw cl::Error(CL_INVALID_VALUE, "Source image must be 4 channels in Copy4Cto3C");

   if (Dest.NbChannels() != 3)
      throw cl::Error(CL_INVALID_VALUE, "Dest image must be 3 channels in Copy4Cto3C");

   Kernel(copy4Cto3C, Source, Dest, Source.Step(), Dest.Step());
}
Beispiel #4
0
void Conversions::SelectChannel(Image& Source, Image& Dest, int ChannelNo)
{
   CheckSizeAndType(Source, Dest);
   Check1Channel(Dest);

   switch (ChannelNo)
   {
   case 1:
      Kernel(select_channel1, Source, Dest, Source.Step(), Dest.Step());
      break;
   case 2:
      Kernel(select_channel2, Source, Dest, Source.Step(), Dest.Step());
      break;
   case 3:
      Kernel(select_channel3, Source, Dest, Source.Step(), Dest.Step());
      break;
   case 4:
      Kernel(select_channel4, Source, Dest, Source.Step(), Dest.Step());
      break;
   default:
      throw cl::Error(CL_IMAGE_FORMAT_NOT_SUPPORTED, "Unsupported number of channels");
   }
   
}
Beispiel #5
0
void CheckSimilarity(const ImageBase& Img1, const ImageBase& Img2)
{
   CheckSizeAndType(Img1, Img2);

   CheckSameNbChannels(Img1, Img2);
}