Оптимизируйте распаковку с помощью dcm4che ⇐ JAVA
-
Anonymous
Оптимизируйте распаковку с помощью dcm4che
Я использую этот код (используя dcm4che) для чтения файлов dicom и доступа к пиксельным данным. Используя инструмент профилирования, я обнаружил, что метод «readraster()» занимает 82% общего времени процессора. Есть ли способ оптимизировать этот алгоритм?
Считыватель ImageReader = ImageIO.getImageReadersByFormatName("DICOM").next(); попробуйте (DicomInputStream dis = новый DicomInputStream(новый файл("путь к файлу"))) { попробуйте (ImageInputStream iis = ImageIO.createImageInputStream(dis)) { reader.setInput(iis, false); Параметр ImageReadParam = reader.getDefaultReadParam(); интервал кадра = 0; Растровый растр = Reader.readRaster(frame, param); int[] пикселей = raster.getPixels(0,0, raster.getWidth(), raster.getHeight(), (int[]) null); int пиксельиндекс = 0; for (int x = 0; x < raster.getWidth(); x++) { for (int y = 0; y < raster.getHeight(); y++) { this.matrix[x][y][layer] = (int) ((this.slope*pixels[pixelIndex]) + this.intercept); пиксельИндекс++; } } } catch (IOException e) { выдать новое RuntimeException(e); } }
Я использую этот код (используя dcm4che) для чтения файлов dicom и доступа к пиксельным данным. Используя инструмент профилирования, я обнаружил, что метод «readraster()» занимает 82% общего времени процессора. Есть ли способ оптимизировать этот алгоритм?
Считыватель ImageReader = ImageIO.getImageReadersByFormatName("DICOM").next(); попробуйте (DicomInputStream dis = новый DicomInputStream(новый файл("путь к файлу"))) { попробуйте (ImageInputStream iis = ImageIO.createImageInputStream(dis)) { reader.setInput(iis, false); Параметр ImageReadParam = reader.getDefaultReadParam(); интервал кадра = 0; Растровый растр = Reader.readRaster(frame, param); int[] пикселей = raster.getPixels(0,0, raster.getWidth(), raster.getHeight(), (int[]) null); int пиксельиндекс = 0; for (int x = 0; x < raster.getWidth(); x++) { for (int y = 0; y < raster.getHeight(); y++) { this.matrix[x][y][layer] = (int) ((this.slope*pixels[pixelIndex]) + this.intercept); пиксельИндекс++; } } } catch (IOException e) { выдать новое RuntimeException(e); } }
Мобильная версия