void RawSlabsPlugin::generateHistogram() { QProgressDialog progress("Generating Histogram", "Cancel", 0, 100, 0); progress.setMinimumDuration(0); float rSize = m_rawMax-m_rawMin; int nX, nY, nZ; nX = m_depth; nY = m_width; nZ = m_height; int nbytes = m_width*m_height*m_bytesPerVoxel; uchar *tmp = new uchar[nbytes]; m_histogram.clear(); if (m_voxelType == _UChar || m_voxelType == _Char || m_voxelType == _UShort || m_voxelType == _Short) { for(uint i=0; i<rSize+1; i++) m_histogram.append(0); } else { for(uint i=0; i<65536; i++) m_histogram.append(0); } int histogramSize = m_histogram.size()-1; for (int nf=0; nf<m_fileName.count(); nf++) { QFile fin(m_fileName[nf]); fin.open(QFile::ReadOnly); fin.seek(m_skipBytes); int istart = ((nf > 0) ? m_slices[nf-1] : 0); int iend = m_slices[nf]; for(uint i=istart; i<iend; i++) { progress.setValue((int)(100.0*(float)i/(float)m_depth)); qApp->processEvents(); fin.read((char*)tmp, nbytes); if (m_voxelType == _UChar) { uchar *ptr = tmp; GENHISTOGRAM(); } else if (m_voxelType == _Char) { char *ptr = (char*) tmp; GENHISTOGRAM(); } if (m_voxelType == _UShort) { ushort *ptr = (ushort*) tmp; GENHISTOGRAM(); } else if (m_voxelType == _Short) { short *ptr = (short*) tmp; GENHISTOGRAM(); } else if (m_voxelType == _Int) { int *ptr = (int*) tmp; GENHISTOGRAM(); } else if (m_voxelType == _Float) { float *ptr = (float*) tmp; GENHISTOGRAM(); } } fin.close(); } delete [] tmp; while(m_histogram.last() == 0) m_histogram.removeLast(); while(m_histogram.first() == 0) m_histogram.removeFirst(); // QMessageBox::information(0, "", QString("%1 %2 : %3").\ // arg(m_rawMin).arg(m_rawMax).arg(rSize)); progress.setValue(100); qApp->processEvents(); }
void GrdPlugin::generateHistogram() { QProgressDialog progress("Generating Histogram", "Cancel", 0, 100, 0); progress.setMinimumDuration(0); float rSize = m_rawMax-m_rawMin; int nbytes = m_width*m_height*m_bytesPerVoxel; uchar *tmp = new uchar[nbytes]; QFile fin(m_fileName[0]); fin.open(QFile::ReadOnly); fin.seek(m_headerBytes); m_histogram.clear(); if (m_voxelType == _UChar || m_voxelType == _Char || m_voxelType == _UShort || m_voxelType == _Short) { for(uint i=0; i<rSize+1; i++) m_histogram.append(0); } else { for(uint i=0; i<65536; i++) m_histogram.append(0); } int histogramSize = m_histogram.size()-1; for(uint i=0; i<m_depth; i++) { progress.setValue((int)(100.0*(float)i/(float)m_depth)); qApp->processEvents(); //---------------------------- QFile fin(m_imageList[i]); fin.open(QFile::ReadOnly); fin.seek(m_headerBytes); fin.read((char*)tmp, nbytes); fin.close(); //---------------------------- if (m_voxelType == _UChar) { uchar *ptr = tmp; GENHISTOGRAM(); } else if (m_voxelType == _Char) { char *ptr = (char*) tmp; GENHISTOGRAM(); } if (m_voxelType == _UShort) { ushort *ptr = (ushort*) tmp; GENHISTOGRAM(); } else if (m_voxelType == _Short) { short *ptr = (short*) tmp; GENHISTOGRAM(); } else if (m_voxelType == _Int) { int *ptr = (int*) tmp; GENHISTOGRAM(); } else if (m_voxelType == _Float) { float *ptr = (float*) tmp; GENHISTOGRAM(); } } fin.close(); delete [] tmp; // while(m_histogram.last() == 0) // m_histogram.removeLast(); // while(m_histogram.first() == 0) // m_histogram.removeFirst(); // QMessageBox::information(0, "", QString("%1 %2 : %3").\ // arg(m_rawMin).arg(m_rawMax).arg(rSize)); progress.setValue(100); qApp->processEvents(); }
void NrrdPlugin::generateHistogram() { QProgressDialog progress("Generating Histogram", "Cancel", 0, 100, 0); progress.setMinimumDuration(0); float rSize = m_rawMax-m_rawMin; int nX, nY, nZ; nX = m_depth; nY = m_width; nZ = m_height; int nbytes = nY*nZ*m_bytesPerVoxel; uchar *tmp = new uchar[nbytes]; m_histogram.clear(); if (m_voxelType == _UChar || m_voxelType == _Char || m_voxelType == _UShort || m_voxelType == _Short) { for(int i=0; i<rSize+1; i++) m_histogram.append(0); } else { for(int i=0; i<65536; i++) m_histogram.append(0); } int histogramSize = m_histogram.size()-1; int idx[3]; int sz[3]; idx[0] = idx[1] = idx[2] = 0; sz[0] = m_height; sz[1] = m_width; sz[2] = 1; for(int i=0; i<nX; i++) { progress.setValue((int)(100.0*(float)i/(float)nX)); qApp->processEvents(); idx[2] = i; if (m_voxelType == _UChar) readSlice<unsigned char>(idx, sz, nbytes, tmp); else if (m_voxelType == _Char) readSlice<char>(idx, sz, nbytes, tmp); else if (m_voxelType == _UShort) readSlice<unsigned short>(idx, sz, nbytes, tmp); else if (m_voxelType == _Short) readSlice<short>(idx, sz, nbytes, tmp); else if (m_voxelType == _Int) readSlice<int>(idx, sz, nbytes, tmp); else if (m_voxelType == _Float) readSlice<float>(idx, sz, nbytes, tmp); if (m_voxelType == _UChar) { uchar *ptr = tmp; GENHISTOGRAM(); } else if (m_voxelType == _Char) { char *ptr = (char*) tmp; GENHISTOGRAM(); } if (m_voxelType == _UShort) { ushort *ptr = (ushort*) tmp; GENHISTOGRAM(); } else if (m_voxelType == _Short) { short *ptr = (short*) tmp; GENHISTOGRAM(); } else if (m_voxelType == _Int) { int *ptr = (int*) tmp; GENHISTOGRAM(); } else if (m_voxelType == _Float) { float *ptr = (float*) tmp; GENHISTOGRAM(); } } delete [] tmp; // while(m_histogram.last() == 0) // m_histogram.removeLast(); // while(m_histogram.first() == 0) // m_histogram.removeFirst(); // QMessageBox::information(0, "", QString("%1 %2 : %3").\ // arg(m_rawMin).arg(m_rawMax).arg(rSize)); progress.setValue(100); qApp->processEvents(); }
void RemapHDF4::generateHistogram() { float rSize = m_rawMax-m_rawMin; QProgressDialog progress("Generating Histogram", "Cancel", 0, 100, 0); progress.setMinimumDuration(0); int nX, nY, nZ; nX = m_depth; nY = m_width; nZ = m_height; int nbytes = nY*nZ*m_bytesPerVoxel; uchar *tmp = new uchar[nbytes]; m_histogram.clear(); if (m_voxelType == _UChar || m_voxelType == _Char || m_voxelType == _UShort || m_voxelType == _Short) { for(uint i=0; i<rSize+1; i++) m_histogram.append(0); } else { for(uint i=0; i<65536; i++) m_histogram.append(0); } int histogramSize = m_histogram.size()-1; int32 start[2], edges[2]; start[0] = start[1] = 0; edges[0] = m_width; edges[1] = m_height; for(uint i=0; i<nX; i++) { progress.setValue((int)(100.0*(float)i/(float)nX)); qApp->processEvents(); int32 sd_id = SDstart(m_imageList[i].toAscii().data(), DFACC_READ); int32 sds_id = SDselect(sd_id, m_Index); int status = SDreaddata(sds_id, start, NULL, edges, (VOIDP)tmp); status = SDendaccess(sds_id); status = SDend(sd_id); if (m_voxelType == _UChar) { uchar *ptr = tmp; GENHISTOGRAM(); } else if (m_voxelType == _Char) { char *ptr = (char*) tmp; GENHISTOGRAM(); } if (m_voxelType == _UShort) { ushort *ptr = (ushort*) tmp; GENHISTOGRAM(); } else if (m_voxelType == _Short) { short *ptr = (short*) tmp; GENHISTOGRAM(); } else if (m_voxelType == _Int) { int *ptr = (int*) tmp; GENHISTOGRAM(); } else if (m_voxelType == _Float) { float *ptr = (float*) tmp; GENHISTOGRAM(); } } delete [] tmp; while(m_histogram.last() == 0) m_histogram.removeLast(); while(m_histogram.first() == 0) m_histogram.removeFirst(); progress.setValue(100); qApp->processEvents(); }