private void SaveasHisFile(string hisPath, List <ushort[, ]> dataList, int intergrationTime) { int NrOfFrames = dataList.Count; int row = dataList[0].GetLength(0); int col = dataList[0].GetLength(1); HisHeader h = new HisHeader(); h.FileID = 0x7000; h.HeaderSize = 68; h.HeadVerdion = 100; h.FileSize = (uint)(32 + 68 + NrOfFrames * row * col * sizeof(ushort)); h.ImageHeaderSize = 32; h.ULX = 1; h.BRX = (short)col; h.ULY = 1; h.BRY = (short)row; h.NrOfFrames = (short)NrOfFrames; h.Correction = 1; try { h.IntegrationTime = (uint)(intergrationTime * 1000); } catch (System.Exception ex) { h.IntegrationTime = 1000 * 1000; } h.TypeOfNumbers = 4; h.X = new byte[34]; h.ImageHeader = new byte[32]; HisObject.SaveDataToHIS(ref h, dataList, hisPath); }
public void SetPixelMapFile(string fn) { if ((IntPtr)pixel_corr_list_ != IntPtr.Zero) { Marshal.FreeHGlobal((IntPtr)pixel_corr_list_); Kernel32Interface.CloseHandle((IntPtr)pixel_corr_list_); pixel_corr_list_ = (int *)IntPtr.Zero; } if (File.Exists(fn)) { List <ushort[, ]> list = HisObject.OpenFile(fn).dataList; int Frames = list.Count; width_ = list[0].GetLength(1); height_ = list[0].GetLength(0); int pCorrListSize = 0; ushort *pPixelSoure = ArrayListToBuffer(list); PKL_Interface.Acquisition_CreatePixelMap(pPixelSoure, height_, width_, null, ref pCorrListSize); pixel_corr_list_ = (int *)Marshal.AllocHGlobal((int)(pCorrListSize * sizeof(int))); PKL_Interface.Acquisition_CreatePixelMap(pPixelSoure, height_, width_, pixel_corr_list_, ref pCorrListSize); Marshal.FreeHGlobal((IntPtr)pPixelSoure); Kernel32Interface.CloseHandle((IntPtr)pPixelSoure); pPixelSoure = (ushort *)IntPtr.Zero; } }
public void SetGainFile(string fn) { if ((IntPtr)gain_map_ != IntPtr.Zero) { Marshal.FreeHGlobal((IntPtr)gain_map_); Kernel32Interface.CloseHandle((IntPtr)gain_map_); gain_map_ = (ushort *)IntPtr.Zero; } if ((IntPtr)gain_med_map_ != IntPtr.Zero) { Marshal.FreeHGlobal((IntPtr)gain_med_map_); Kernel32Interface.CloseHandle((IntPtr)gain_med_map_); gain_med_map_ = (ushort *)IntPtr.Zero; } if (File.Exists(fn)) { List <ushort[, ]> list = HisObject.OpenFile(fn).dataList; gain_seq_num_ = list.Count; int count = list[0].Length; width_ = list[0].GetLength(1); height_ = list[0].GetLength(0); gain_map_ = ArrayListToBuffer(list); gain_med_map_ = (ushort *)Marshal.AllocHGlobal((int)(gain_seq_num_ * sizeof(short))); PKL_Interface.Acquisition_CreateGainMap(gain_map_, gain_med_map_, count, gain_seq_num_); offset_map_ = (ushort *)Marshal.AllocHGlobal((int)(width_ * height_ * sizeof(short))); for (int i = 0; i < width_ * height_; i++) { offset_map_[i] = 0; } } }
public void SetOffsetFile(string fn) { HisObject his = new HisObject(); his.LoadDataFromFile(fn); offset_img_ = his.dataList[0]; width_ = his.hisHeader.BRX; height_ = his.hisHeader.BRY; }
public static HisObject OpenFile(string file) { HisObject his = new HisObject(); if (his.LoadDataFromFile(file)) { return(his); } else { return(null); } }
private void ReadFile(string file) { //TiffReader tiff = new TiffReader(); //IOD_RI RI = new IOD_RI(); HisObject His = new HisObject(); //IOD_RD RD = new IOD_RD(); ImageObject img = new ImageObject(); //if (tiff.ReadFile(file)) //{ // imageRows = (uint)tiff.ImageHegiht; // imageColumns = (uint)tiff.ImageWidth; // RefreshScale(); // img.pixelSize = pixelSize; // img.centerX = imageCenterX; // img.centerY = imageCenterY; // ushort[,] image = new ushort[tiff.ImageHegiht, tiff.ImageWidth]; // int sn = 0; // for (int y = 0; y < tiff.ImageHegiht; y++) // { // for (int x = 0; x < tiff.ImageWidth; x++) // { // image[y, x] = tiff.Value[sn++]; // } // } // img.imageData = image; // img.createTime = DateTime.Now; // imgList.Add(img); //} //if (RI.OpenFromFile(file)) //{ // img.pixelSize = RI.RIImage.ImagePlanePixelSpacing[0]; // img.centerX = -RI.RIImage.RTImagePosition[0] / RI.RIImage.ImagePlanePixelSpacing[0]; // img.centerY = RI.RIImage.RTImagePosition[1] / RI.RIImage.ImagePlanePixelSpacing[1]; // img.level = (int)RI.RIImage.WindowCenter; // img.window = (int)RI.RIImage.WindowWidth; // img.imageHeight = RI.ImagePixel.PixelData.GetLength(0); // img.imageWidth = RI.ImagePixel.PixelData.GetLength(1); // ushort[,] image = new ushort[img.imageHeight, img.imageWidth]; // short[,] dv = RI.ImagePixel.PixelData; // for (int y = 0; y < img.imageHeight; y++) // { // for (int x = 0; x < img.imageWidth; x++) // { // image[y,x] = (ushort)dv[y,x]; // } // } // img.imageData = image; // imgList.Add(img); // GC.Collect(); //} if (His.LoadDataFromFile(file)) { if (His.dataList != null) { for (int i = 0; i < His.dataList.Count; i++) { ImageObject imageObj = new ImageObject(); imageObj.ImageData = His.dataList[i]; imageRows = (uint)imageObj.ImageData.GetLength(0); imageColumns = (uint)imageObj.ImageData.GetLength(1); RefreshScale(); imageObj.pixelSize = pixelSize; imageObj.centerX = imageCenterX; imageObj.centerY = imageCenterY; imgList.Enqueue(imageObj); } His.dataList = null; GC.Collect(); } } //else if (RD.OpenFromFile(file))//增加RD图像,2011.12.15,ml //{ // //img.level = 4590; // //img.window = 10000; // if (RD.RD.PixelData.Length > 0) // { // img.pixelSize = RD.RD.PixelSpacing; // img.imageWidth = RD.RD.PixelData[0].GetLength(1); // img.imageHeight = RD.RD.PixelData[0].GetLength(0); // img.centerX = img.imageWidth / 2; //-RDF.fra.ImagePosition[0] / PixelSize; // img.centerY = img.imageHeight / 2;//RDF.fra.ImagePosition[1] / PixelSize; // img.SliceDepth = RD.RD.ImagePosition[1]; // ushort[,] image = new ushort[img.imageHeight, img.imageWidth]; // UInt32[,] rd = RD.RD.PixelData[0]; // for (int i = 0; i < img.imageHeight; i++) // { // for (int j = 0; j < img.imageWidth; j++) // { // image[i, j] = Convert.ToUInt16(rd[i, j] * RD.RD.DoseGridScaling * 1000F); // } // } // img.imageData = image; // imgList.Add(img); // GC.Collect(); // } //} //else //{ // try // { // //Bitmap bm = new Bitmap(file); // //LWList.Add(new Point(-1, -1)); // //imgList.Add(BitmapToUShort(bm)); // //pixelSize = phySize / imgList[0].GetLength(0); // //imageCenterX = phyCenterX / pixelSize; // //imageCenterY = phyCenterY / pixelSize; // } // catch (System.Exception ex) // { // ; // } //} }