У кого-нибудь есть процедура преобразования изображения TIF в оттенки серого с помощью LIBTIFF?

#grayscale #libtiff

#полутоновый #либтиф

Вопрос:

Я могу использовать LIBTIFF для чтения тегов файла TIF с одним изображением, включая длину и ширину. Я выяснил, как создать файл TIF аналогичного размера. Но я не могу понять, как прочитать массив из 24-битных ячеек, разделить значения красного, зеленого и синего, а затем записать в массив из 8-битных ячеек. Как только красный, Зеленый и синий будут разделены, я думаю, что смогу рассчитать оттенок серого.

 Private Sub Gray_Scale_It(fileColor As String, fileGray As String)  Dim inpTif As Tiff  Dim outTif As Tiff   ' ---- Open color TIF and get basic info  inpTif = Tiff.Open(fileColor, "r")  Dim imageHeight As FieldValue() = inpTif.GetField(TiffTag.IMAGELENGTH)  Dim h As Integer = imageHeight(0).ToInt()  Dim imageWidth As FieldValue() = inpTif.GetField(TiffTag.IMAGEWIDTH)  Dim w As Integer = imageWidth(0).ToInt()  Dim bitsPerSample As FieldValue() = inpTif.GetField(TiffTag.BITSPERSAMPLE)  Dim bps As Short = bitsPerSample(0).ToShort()  Dim samplesPerPixel As FieldValue() = inpTif.GetField(TiffTag.SAMPLESPERPIXEL)  Dim spp As Short = samplesPerPixel(0).ToShort()  Dim photoMetricField As FieldValue() = inpTif.GetField(TiffTag.PHOTOMETRIC)  Dim photo As Photometric = DirectCast(photoMetricField(0).ToInt(), Photometric)  ' ---- Create gray TIF and set basic info  outTif = Tiff.Open(fileGray, "w")  outTif.SetField(TiffTag.IMAGEWIDTH, w)  outTif.SetField(TiffTag.IMAGELENGTH, h)  outTif.SetField(TiffTag.BITSPERSAMPLE, 8)  outTif.SetField(TiffTag.SAMPLESPERPIXEL, 1)  outTif.SetField(TiffTag.PHOTOMETRIC, 0)  ?????? End Sub