Đây là câu hỏi của tôi. Hãy cùng tôi giải thích một chút:byte [] để ushort []
Tôi đang đọc hình ảnh tiff vào bộ đệm; Mỗi điểm ảnh của tiff của tôi được đại diện bởi một ushort (16 bit dữ liệu, không tiêu cực).
Kích thước hình ảnh của tôi là 64 * 64 = 4096. Khi tiff của tôi được tải vào bộ đệm, độ dài bộ đệm là 8192 (gấp đôi 4096). Tôi đoán điều này là bởi vì trong bộ đệm của tôi, máy tính sử dụng 2 byte để lưu trữ một giá trị pixel duy nhất.
Tôi muốn nhận được giá trị cho bất kỳ pixel cụ thể nào, trong trường hợp này, tôi nên kết hợp mỗi 2 byte thành 1 ushort?
Ví dụ: 00000000 11111111 -> 0000000011111111?
Đây là mã của tôi:
public static void LoadTIFF(string fileName, int pxlIdx, ref int pxlValue)
{
using (Tiff image = Tiff.Open(fileName, "r"))
{
if (image == null)
return;
FieldValue[] value = image.GetField(TiffTag.IMAGEWIDTH);
int width = value[0].ToInt();
byte[] buffer = new byte[image.StripSize()];
for (int strip = 0; strip < image.NumberOfStrips(); strip++)
image.ReadEncodedStrip(strip, buffer, 0, -1);
// do conversion here:
//ushort bufferHex = BitConverter.ToUInt16(buffer, 0);
image.Close();
}
}
Làm thế nào để đọc các byte [] đệm để đảm bảo rằng tôi có thể nhận được 16 bit ushort giá trị pixel?
Cảm ơn
Yup, tôi nghĩ mình có điểm ảnh mình muốn. Cảm ơn nhiều! –
Mặc dù bù trừ dường như nhân 2, và y thực sự là (y-1), và tương tự cho x. Cũng tùy thuộc vào chỉ số dựa trên 0 hoặc 1. –