From Gordian.Kabelitz at medma.uni-heidelberg.de Mon Jul 3 07:22:49 2017 From: Gordian.Kabelitz at medma.uni-heidelberg.de (Kabelitz, Gordian) Date: Mon, 3 Jul 2017 11:22:49 +0000 Subject: [ITK-users] Writing from an external buffer to VectorImage In-Reply-To: References: <81be8e27dd684f54944a7ff7b0d67c42@exch06.ad.uni-heidelberg.de> Message-ID: <6d77197c34a8433299f202d1b223ba09@exch06.ad.uni-heidelberg.de> Hello, I want to provide a solution to the question I had. In the case that someone else need an code example. Just to give an idea how the implementation can look like. The main reads an image and passes this image to the function that calls the kernel. After the kernel is done the result is copied to the new vector image [1]. int main(int argc, char* argv[]) { createImage(); auto nrrdIO = NRRDIOType::New(); auto reader = ReaderType::New(); reader->SetFileName("newImage.nrrd"); reader->SetImageIO(nrrdIO); try { reader->Update(); } catch (itk::ExceptionObject e) { std::cerr << "Exception caught!\n"; std::cerr << e << std::endl; } auto image = reader->GetOutput(); auto size = image->GetLargestPossibleRegion().GetSize(); int sz[3] = {size[0],size[1],size[2]}; auto totalVoxel = sz[0] * sz[1] * sz[2]; auto cuda = CudaTest(); auto out = new float4[totalVoxel]; cuda.runKernel(out, image->GetBufferPointer(), sz); auto vecImage = VectorImageType::New(); VectorImageType::IndexType index; index[0] = 0; index[1] = 0; index[2] = 0; VectorImageType::RegionType region(index,size); vecImage->SetRegions(region); vecImage->SetVectorLength(3); vecImage->Allocate(); // copy image buffer to vecImage, component by component auto vecBuffer = vecImage->GetBufferPointer(); auto j = 0; for (auto i = 0; i < totalVoxel; ++i) { vecBuffer[j] = out[i].x; j++; vecBuffer[j] = out[i].y; j++; vecBuffer[j] = out[i].z; j++; } auto writer = WriterType::New(); writer->SetInput(vecImage); writer->SetFileName("out.nrrd"); writer->SetImageIO(nrrdIO); try { writer->Update(); } catch (itk::ExceptionObject e) { std::cerr << "Exception caught!\n"; std::cerr << e << std::endl; } delete[] out; } The function that starts the kernel looks like this: void CudaTest::runKernel(float4* out, float* data, int* size) { auto totalVoxel = size[0] * size[1] * size[2]; // copy image to texture memory auto channelDesc = cudaCreateChannelDesc(); cudaArray *cuArray; auto extent = make_cudaExtent(size[0], size[1], size[2]); gpuErrChk(cudaMalloc3DArray(&cuArray, &channelDesc, extent)); cudaMemcpy3DParms copyparms = { 0 }; copyparms.extent = extent; copyparms.dstArray = cuArray; copyparms.kind = cudaMemcpyHostToDevice; copyparms.srcPtr = make_cudaPitchedPtr((void*)data, size[0] * sizeof(float), size[0], size[1]); gpuErrChk(cudaMemcpy3D(©parms)); // set texture configuration and bind array to texture tex_volume.addressMode[0] = cudaAddressModeClamp; tex_volume.addressMode[1] = cudaAddressModeClamp; tex_volume.addressMode[2] = cudaAddressModeClamp; tex_volume.filterMode = cudaFilterModeLinear; tex_volume.normalized = false; gpuErrChk(cudaBindTextureToArray(tex_volume, cuArray, channelDesc)); // allocate memory for gradient image data on the device float4 *dev_gradientImage; gpuErrChk(cudaMalloc(&dev_gradientImage, totalVoxel * sizeof(float4))); // copy image dimension to device int* dev_dimension; gpuErrChk(cudaMalloc(&dev_dimension, 3 * sizeof(int))); gpuErrChk(cudaMemcpy(dev_dimension, size, 3 * sizeof(int), cudaMemcpyHostToDevice)); // start computation for the gradient image dim3 blockDim(16, 8, 8); //<- threads in block, change according to used GPU, max 1024 threads in a single block dim3 grid((size[0] / blockDim.x) + 1, (size[1] / blockDim.y) + 1, (size[2] / blockDim.z) + 1); computeGradientImage << > >(dev_gradientImage, dev_dimension); gpuErrChk(cudaGetLastError()); gpuErrChk(cudaDeviceSynchronize()); // unbind texture gpuErrChk(cudaUnbindTexture(tex_volume)); gpuErrChk(cudaFreeArray(cuArray)); gpuErrChk(cudaMemcpy(out, dev_gradientImage, totalVoxel * sizeof(float4), cudaMemcpyDeviceToHost)); printf("Kernel is done.\n"); } The kernel used in this example. __global__ void computeGradientImage(float4* gradientImage, int* dimension) { // every thread computes the float4 voxel with theta,phi,magnitude from gradient image int idx = blockIdx.x * blockDim.x + threadIdx.x; int idy = blockIdx.y * blockDim.y + threadIdx.y; int idz = blockIdx.z * blockDim.z + threadIdx.z; if (idx < dimension[0] && idy < dimension[1] && idz < dimension[2]) { // define sobel filter for each direction float x_000 = tex3D(tex_volume, idx - 1, idy - 1, idz - 1); float x_001 = tex3D(tex_volume, idx - 1, idy - 1, idz ); float x_002 = tex3D(tex_volume, idx - 1, idy - 1, idz + 1); float x_010 = tex3D(tex_volume, idx - 1, idy, idz - 1); float x_011 = tex3D(tex_volume, idx - 1, idy, idz ); float x_012 = tex3D(tex_volume, idx - 1, idy, idz + 1); float x_020 = tex3D(tex_volume, idx - 1, idy + 1, idz - 1); float x_021 = tex3D(tex_volume, idx - 1, idy + 1, idz ); float x_022 = tex3D(tex_volume, idx - 1, idy + 1, idz + 1); float x_100 = tex3D(tex_volume, idx, idy - 1, idz - 1); float x_101 = tex3D(tex_volume, idx, idy - 1, idz ); float x_102 = tex3D(tex_volume, idx, idy - 1, idz + 1); float x_110 = tex3D(tex_volume, idx, idy, idz - 1); // float x_111 = tex3D(tex_volume, idx, idy, idz ); float x_112 = tex3D(tex_volume, idx, idy, idz + 1); float x_120 = tex3D(tex_volume, idx, idy + 1, idz - 1); float x_121 = tex3D(tex_volume, idx, idy + 1, idz ); float x_122 = tex3D(tex_volume, idx, idy + 1, idz + 1); float x_200 = tex3D(tex_volume, idx + 1, idy - 1, idz - 1); float x_201 = tex3D(tex_volume, idx + 1, idy - 1, idz ); float x_202 = tex3D(tex_volume, idx + 1, idy - 1, idz + 1); float x_210 = tex3D(tex_volume, idx + 1, idy, idz - 1); float x_211 = tex3D(tex_volume, idx + 1, idy, idz ); float x_212 = tex3D(tex_volume, idx + 1, idy, idz + 1); float x_220 = tex3D(tex_volume, idx + 1, idy + 1, idz - 1); float x_221 = tex3D(tex_volume, idx + 1, idy + 1, idz ); float x_222 = tex3D(tex_volume, idx + 1, idy + 1, idz + 1); // derivative in x direction auto centerX = - 1.f*x_000 - 3.f*x_010 - 1.f*x_020 - 3.f*x_001 - 6.f*x_011 - 3.f*x_021 - 1.f*x_002 - 3.f*x_012 - 1.f*x_022 + 1.f*x_200 + 3.f*x_210 + 1.f*x_220 + 3.f*x_201 + 6.f*x_211 + 3.f*x_221 + 1.f*x_202 + 3.f*x_212 + 1.f*x_222; // derivative in y direction auto centerY = - 1.f*x_000 - 3.f*x_100 - 1.f*x_200 - 3.f*x_001 - 6.f*x_101 - 3.f*x_201 - 1.f*x_002 - 3.f*x_102 - 1.f*x_202 + 1.f*x_020 + 3.f*x_120 + 1.f*x_220 + 3.f*x_021 + 6.f*x_121 + 3.f*x_221 + 1.f*x_022 + 3.f*x_122 + 1.f*x_222; // derivative in z direction auto centerZ = - 1.f*x_000 - 3.f*x_100 - 1.f*x_200 - 3.f*x_010 - 6.f*x_110 - 3.f*x_210 - 1.f*x_020 - 3.f*x_120 - 1.f*x_220 + 1.f*x_002 + 3.f*x_102 + 1.f*x_202 + 3.f*x_012 + 6.f*x_112 + 3.f*x_212 + 1.f*x_022 + 3.f*x_122 + 1.f*x_222; // magnitude of each voxels gradient auto magn = sqrtf(centerX*centerX + centerY*centerY + centerZ*centerZ); gradientImage[idx + dimension[0] * (idy + idz * dimension[1])] = make_float4(centerX, centerY, centerZ, magn); } } with kind regards, Gordian [1]: https://itk.org/Doxygen/html/classitk_1_1VectorImage.html Von: D?enan Zuki? [mailto:dzenanz at gmail.com] Gesendet: Mittwoch, 28. Juni 2017 17:17 An: Kabelitz, Gordian Cc: insight-users at itk.org Betreff: Re: [ITK-users] Writing from an external buffer to VectorImage Hi Gordian, this approach looks like it should work. What is wrong with it? Regards, D?enan Zuki?, PhD, Senior R&D Engineer, Kitware (Carrboro, N.C.) On Wed, Jun 28, 2017 at 9:51 AM, Kabelitz, Gordian > wrote: Hello, i computed a gradient with my own function and as a result a pointer to an image buffer is provided. I know the size, origin and spacing of the gradient component image. I want to copy the gradient image into an itk::VectorImage with the components for the x,y,z gradients. The way I copied the image to the GPU is that I retrieved the buffer pointer from my input image and use the pointer to copy the image data to the GPU. I used the way proposed in [1]. The computeGradientImage method is listed at the end of this mail. [...] // get float pointer to image data ImageType::Pointer image = reader->GetOutput(); Image->Update(); float* data = image.GetBufferPointer(); // copy image data to GPU texture memory (this works) gpu_dev->setVoxels(dimension, voxelSize, data); [...] computeGradientImage<<>> (dev_gradientImage, dimension); // copy resulting gradientImage to host variable float4* host_gradientImage; cudaMemcpy(host_gradient, dev_gradientImage, numberOfVoxels*sizeof(float4)); --> Pseudo Code <-- // Now I want to reverse the copy process. I have a float4 image and want to copy this into a itk::VectorImage with VariableVectorLength of 3 (skipping the magnitude value). [...] -> size, spacing, origin, region definition Itk::VectorImageType vecImage = VectorImageType::New(); vecImage->setRegion(region); vecImage ->SetVectorLength(3); vecImage->Allocate(); // copy image buffer to vecImage, component by component auto vecBuffer = vecImage->getBufferPointer(); auto j = 0; for (i=0; i Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Kitware offers ITK Training Courses, for more information visit: http://www.kitware.com/products/protraining.php Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/insight-users -------------- next part -------------- An HTML attachment was scrubbed... URL: From dzenanz at gmail.com Mon Jul 3 08:27:36 2017 From: dzenanz at gmail.com (=?UTF-8?B?RMW+ZW5hbiBadWtpxIc=?=) Date: Mon, 3 Jul 2017 08:27:36 -0400 Subject: [ITK-users] Writing from an external buffer to VectorImage In-Reply-To: <6d77197c34a8433299f202d1b223ba09@exch06.ad.uni-heidelberg.de> References: <81be8e27dd684f54944a7ff7b0d67c42@exch06.ad.uni-heidelberg.de> <6d77197c34a8433299f202d1b223ba09@exch06.ad.uni-heidelberg.de> Message-ID: Thanks for sharing your code Gordian, it will probably help somebody in the future! On Mon, Jul 3, 2017 at 7:22 AM, Kabelitz, Gordian < Gordian.Kabelitz at medma.uni-heidelberg.de> wrote: > Hello, > > > > I want to provide a solution to the question I had. In the case that > someone else need an code example. > > Just to give an idea how the implementation can look like. > > The main reads an image and passes this image to the function that calls > the kernel. > > After the kernel is done the result is copied to the new vector image [1]. > > > > int main(int argc, char* argv[]) > > { > > > > createImage(); > > auto nrrdIO = NRRDIOType::New(); > > auto reader = ReaderType::New(); > > reader->SetFileName("newImage.nrrd"); > > reader->SetImageIO(nrrdIO); > > > > try > > { > > reader->Update(); > > } > > catch (itk::ExceptionObject e) > > { > > std::cerr << "Exception caught!\n"; > > std::cerr << e << std::endl; > > } > > > > auto image = reader->GetOutput(); > > > > auto size = image->GetLargestPossibleRegion().GetSize(); > > int sz[3] = {size[0],size[1],size[2]}; > > auto totalVoxel = sz[0] * sz[1] * sz[2]; > > > > auto cuda = CudaTest(); > > auto out = new float4[totalVoxel]; > > cuda.runKernel(out, image->GetBufferPointer(), sz); > > > > auto vecImage = VectorImageType::New(); > > VectorImageType::IndexType index; > > index[0] = 0; > > index[1] = 0; > > index[2] = 0; > > VectorImageType::RegionType region(index,size); > > vecImage->SetRegions(region); > > vecImage->SetVectorLength(3); > > vecImage->Allocate(); > > > > // copy image buffer to vecImage, component by component > > auto vecBuffer = vecImage->GetBufferPointer(); > > auto j = 0; > > for (auto i = 0; i < totalVoxel; ++i) > > { > > vecBuffer[j] = out[i].x; j++; > > vecBuffer[j] = out[i].y; j++; > > vecBuffer[j] = out[i].z; j++; > > } > > > > auto writer = WriterType::New(); > > writer->SetInput(vecImage); > > writer->SetFileName("out.nrrd"); > > writer->SetImageIO(nrrdIO); > > try > > { > > writer->Update(); > > } > > catch (itk::ExceptionObject e) > > { > > std::cerr << "Exception caught!\n"; > > std::cerr << e << std::endl; > > } > > > > delete[] out; > > > > } > > > > The function that starts the kernel looks like this: > > > > void CudaTest::runKernel(float4* out, float* data, int* size) > > { > > auto totalVoxel = size[0] * size[1] * size[2]; > > // copy image to texture memory > > auto channelDesc = cudaCreateChannelDesc(); > > cudaArray *cuArray; > > auto extent = make_cudaExtent(size[0], size[1], size[2]); > > gpuErrChk(cudaMalloc3DArray(&cuArray, &channelDesc, extent)); > > cudaMemcpy3DParms copyparms = { 0 }; > > copyparms.extent = extent; > > copyparms.dstArray = cuArray; > > copyparms.kind = cudaMemcpyHostToDevice; > > copyparms.srcPtr = make_cudaPitchedPtr((void*)data, size[0] * > sizeof(float), size[0], size[1]); > > gpuErrChk(cudaMemcpy3D(©parms)); > > > > // set texture configuration and bind array to texture > > tex_volume.addressMode[0] = cudaAddressModeClamp; > > tex_volume.addressMode[1] = cudaAddressModeClamp; > > tex_volume.addressMode[2] = cudaAddressModeClamp; > > tex_volume.filterMode = cudaFilterModeLinear; > > tex_volume.normalized = false; > > gpuErrChk(cudaBindTextureToArray(tex_volume, cuArray, > channelDesc)); > > > > // allocate memory for gradient image data on the device > > float4 *dev_gradientImage; > > gpuErrChk(cudaMalloc(&dev_gradientImage, totalVoxel * sizeof(float4 > ))); > > > > // copy image dimension to device > > int* dev_dimension; > > gpuErrChk(cudaMalloc(&dev_dimension, 3 * sizeof(int))); > > gpuErrChk(cudaMemcpy(dev_dimension, size, 3 * sizeof(int), > cudaMemcpyHostToDevice)); > > > > // start computation for the gradient image > > dim3 blockDim(16, 8, 8); //<- threads in block, change according > to used GPU, max 1024 threads in a single block > > dim3 grid((size[0] / blockDim.x) + 1, (size[1] / blockDim.y) + 1, ( > size[2] / blockDim.z) + 1); > > > > computeGradientImage << > >(dev_gradientImage, > dev_dimension); > > gpuErrChk(cudaGetLastError()); > > gpuErrChk(cudaDeviceSynchronize()); > > > > // unbind texture > > gpuErrChk(cudaUnbindTexture(tex_volume)); > > gpuErrChk(cudaFreeArray(cuArray)); > > > > gpuErrChk(cudaMemcpy(out, dev_gradientImage, totalVoxel * sizeof( > float4), cudaMemcpyDeviceToHost)); > > printf("Kernel is done.\n"); > > } > > > > The kernel used in this example. > > > > __global__ void computeGradientImage(float4* gradientImage, int* dimension > ) > > { > > // every thread computes the float4 voxel with theta,phi,magnitude > from gradient image > > int idx = blockIdx.x * blockDim.x + threadIdx.x; > > int idy = blockIdx.y * blockDim.y + threadIdx.y; > > int idz = blockIdx.z * blockDim.z + threadIdx.z; > > > > if (idx < dimension[0] && idy < dimension[1] && idz < dimension[2]) > > { > > // define sobel filter for each direction > > float x_000 = tex3D(tex_volume, idx - 1, idy - 1, idz - 1); > > float x_001 = tex3D(tex_volume, idx - 1, idy - 1, idz ); > > float x_002 = tex3D(tex_volume, idx - 1, idy - 1, idz + 1); > > float x_010 = tex3D(tex_volume, idx - 1, idy, idz - 1); > > float x_011 = tex3D(tex_volume, idx - 1, idy, idz ); > > float x_012 = tex3D(tex_volume, idx - 1, idy, idz + 1); > > float x_020 = tex3D(tex_volume, idx - 1, idy + 1, idz - 1); > > float x_021 = tex3D(tex_volume, idx - 1, idy + 1, idz ); > > float x_022 = tex3D(tex_volume, idx - 1, idy + 1, idz + 1); > > > > float x_100 = tex3D(tex_volume, idx, idy - 1, idz - 1); > > float x_101 = tex3D(tex_volume, idx, idy - 1, idz ); > > float x_102 = tex3D(tex_volume, idx, idy - 1, idz + 1); > > float x_110 = tex3D(tex_volume, idx, idy, idz - 1); > > // float x_111 = tex3D(tex_volume, idx, idy, idz ); > > float x_112 = tex3D(tex_volume, idx, idy, idz + 1); > > float x_120 = tex3D(tex_volume, idx, idy + 1, idz - 1); > > float x_121 = tex3D(tex_volume, idx, idy + 1, idz ); > > float x_122 = tex3D(tex_volume, idx, idy + 1, idz + 1); > > > > float x_200 = tex3D(tex_volume, idx + 1, idy - 1, idz - 1); > > float x_201 = tex3D(tex_volume, idx + 1, idy - 1, idz ); > > float x_202 = tex3D(tex_volume, idx + 1, idy - 1, idz + 1); > > float x_210 = tex3D(tex_volume, idx + 1, idy, idz - 1); > > float x_211 = tex3D(tex_volume, idx + 1, idy, idz ); > > float x_212 = tex3D(tex_volume, idx + 1, idy, idz + 1); > > float x_220 = tex3D(tex_volume, idx + 1, idy + 1, idz - 1); > > float x_221 = tex3D(tex_volume, idx + 1, idy + 1, idz ); > > float x_222 = tex3D(tex_volume, idx + 1, idy + 1, idz + 1); > > > > // derivative in x direction > > auto centerX = - 1.f*x_000 - 3.f*x_010 - 1.f*x_020 > > - 3.f*x_001 - 6.f*x_011 - 3.f*x_021 > > - 1.f*x_002 - 3.f*x_012 - 1.f*x_022 > > + 1.f*x_200 + 3.f*x_210 + 1.f*x_220 > > + 3.f*x_201 + 6.f*x_211 + 3.f*x_221 > > + 1.f*x_202 + 3.f*x_212 + 1.f*x_222; > > > > // derivative in y direction > > auto centerY = - 1.f*x_000 - 3.f*x_100 - 1.f*x_200 > > - 3.f*x_001 - 6.f*x_101 - 3.f*x_201 > > - 1.f*x_002 - 3.f*x_102 - 1.f*x_202 > > + 1.f*x_020 + 3.f*x_120 + 1.f*x_220 > > + 3.f*x_021 + 6.f*x_121 + 3.f*x_221 > > + 1.f*x_022 + 3.f*x_122 + 1.f*x_222; > > > > // derivative in z direction > > auto centerZ = - 1.f*x_000 - 3.f*x_100 - 1.f*x_200 > > - 3.f*x_010 - 6.f*x_110 - 3.f*x_210 > > - 1.f*x_020 - 3.f*x_120 - 1.f*x_220 > > + 1.f*x_002 + 3.f*x_102 + 1.f*x_202 > > + 3.f*x_012 + 6.f*x_112 + 3.f*x_212 > > + 1.f*x_022 + 3.f*x_122 + 1.f*x_222; > > > > // magnitude of each voxels gradient > > auto magn = sqrtf(centerX*centerX + centerY*centerY + > centerZ*centerZ); > > > > gradientImage[idx + dimension[0] * (idy + idz * dimension[1])] > = make_float4(centerX, centerY, centerZ, magn); > > } > > } > > > > with kind regards, > > Gordian > > > > [1]: https://itk.org/Doxygen/html/classitk_1_1VectorImage.html > > > > > > *Von:* D?enan Zuki? [mailto:dzenanz at gmail.com] > *Gesendet:* Mittwoch, 28. Juni 2017 17:17 > *An:* Kabelitz, Gordian > *Cc:* insight-users at itk.org > *Betreff:* Re: [ITK-users] Writing from an external buffer to VectorImage > > > > Hi Gordian, > > > > this approach looks like it should work. What is wrong with it? > > > > Regards, > > D?enan Zuki?, PhD, Senior R&D Engineer, Kitware (Carrboro, N.C.) > > > > On Wed, Jun 28, 2017 at 9:51 AM, Kabelitz, Gordian < > Gordian.Kabelitz at medma.uni-heidelberg.de> wrote: > > Hello, > > i computed a gradient with my own function and as a result a pointer to an > image buffer is provided. I know the size, origin and spacing of the > gradient component image. > I want to copy the gradient image into an itk::VectorImage with the > components for the x,y,z gradients. > > The way I copied the image to the GPU is that I retrieved the buffer > pointer from my input image and use the pointer to copy the image data to > the GPU. > I used the way proposed in [1]. The computeGradientImage method is listed > at the end of this mail. > > [...] > // get float pointer to image data > ImageType::Pointer image = reader->GetOutput(); > Image->Update(); > > float* data = image.GetBufferPointer(); > // copy image data to GPU texture memory (this works) > gpu_dev->setVoxels(dimension, voxelSize, data); > [...] > computeGradientImage<<>> (dev_gradientImage, dimension); > > // copy resulting gradientImage to host variable > float4* host_gradientImage; > cudaMemcpy(host_gradient, dev_gradientImage, numberOfVoxels*sizeof(float4)) > ; > > --> Pseudo Code <-- > // Now I want to reverse the copy process. I have a float4 image and want > to copy this into a itk::VectorImage with VariableVectorLength of 3 > (skipping the magnitude value). > [...] -> size, spacing, origin, region definition > Itk::VectorImageType vecImage = VectorImageType::New(); > vecImage->setRegion(region); > vecImage ->SetVectorLength(3); > vecImage->Allocate(); > > // copy image buffer to vecImage, component by component > auto vecBuffer = vecImage->getBufferPointer(); > auto j = 0; > for (i=0; i { > vecbuffer[j] = host_gradient[i].x; j++; > vecbuffer[j] = host_gradient[i].y; j++; > vecbuffer[j] = host_gradient[i].z; j++; > } > > // save vecImage as nrrd image > [...] > > I haven't found a way to achieve my idea. > Are there any suggestions or examples? > As far I can see I cannot use the itk::ImportImageFilter. > > Thank you for any suggestions. > With kind regards, > Gordian > > [1]: https://itk.org/CourseWare/Training/GettingStarted-V.pdf > > void computeGradientImage(float4* gradientImage, int* dimension) > { > // every thread computes the float4 voxel with theta,phi,magnitude > from gradient image > int idx = blockIdx.x * blockDim.x + threadIdx.x; > int idy = blockIdx.y * blockDim.y + threadIdx.y; > int idz = blockIdx.z * blockDim.z + threadIdx.z; > > if (idx < dimension[0] && idy < dimension[1] && idz < dimension[2]) > { > // define sobel filter for each direction > [...] > > // run sobel on image in texture memory for each direction > and put result into a float4 image > gradientImage[idx + dimension[0] * (idy + idz * > dimension[1])] = make_float4(sobelX, sobelY, sobelZ, magn); > } > } > > > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > > > > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From brahiand.rangel at gmail.com Wed Jul 5 11:35:22 2017 From: brahiand.rangel at gmail.com (BRAHIAN DAVID RANGEL CASTRO) Date: Wed, 5 Jul 2017 10:35:22 -0500 Subject: [ITK-users] Extract contour of several regions as if they were connected Message-ID: Hi itk users, Currently I am working on passing an algorithm written in matlab to itk. One of the steps is use snakes* to get a contour (as mask) of several regions that are not connected as if they were. Here is a visual example:? snakes sample.png ? I have tried using the GeodesicActiveContourLevelSetImageFilter but the result is not satisfactory. Could you tell me which parameters to adjust in order to achieve this result or some other suggestion of which filter to use? Thanks, Brahian *The algorithm used for the snakes is https://www.mathworks.com/ matlabcentral/fileexchange/28149-snake---active-contour -------------- next part -------------- An HTML attachment was scrubbed... URL: From aharr8 at uwo.ca Wed Jul 5 15:19:37 2017 From: aharr8 at uwo.ca (Andrew Harris) Date: Wed, 5 Jul 2017 15:19:37 -0400 Subject: [ITK-users] [ITK] applying a transform to an ITK Point object results in it moving the opposite direction from the image In-Reply-To: References: <6ABFBEEB-EBE8-478C-BEEB-747A5373FBE9@mail.nih.gov> Message-ID: Thanks for getting back to me. The numbers correspond correctly to what is expected when I do the math directly in MATLAB, and when I do the matrix multiplication I get the same coordinates that are output by ITK for both the translation that works and the rotation that does not. One curious note is that while I set the center of rotation explicitly, it shows up as a zero vector in the output. I was able to get the known rotation case to match up the expected coordinates by subtracting newTranslatin()->GetOffset(); from the resulting point, but then of course the known translation case fails. Any further thoughts would be appreciated. -- AH Andrew Harris, Honours BSc (Medical Physics) PhD (CAMPEP) & MClSc Candidate ----------------------------------------------------------------------------------------------- *This email and any attachments thereto may contain private, confidential, and privileged materials for the sole use of the intended recipient. Any reviewing, copying, or distribution of this email (or any attachments thereto) by other than the intended recipient is strictly prohibited. If you are not the intended recipient, please contact the sender immediately and permanently destroy this email and any attachments thereto.* On Thu, Jun 29, 2017 at 3:04 PM, Yaniv, Ziv Rafael (NIH/NLM/LHC) [C] < zivrafael.yaniv at nih.gov> wrote: > The code snippet looks correct. I would advise that you print the > transformations to see that you are getting what you expect. The relevant > entries, Matrix, Center, Translation, Offset: > > > > Original transform is: > > > > *T*(*x*)=*A*(*x*?*c*)+*t*+*c* > > > > Where: > > *A* ? matrix > > *c* ? center > > *t *? translation > > *t**+c ?A**c* ? offset > > > > The inverse should have: > > *A*^{-1} ? matrix > > *c* ? center > > -*A*^{-1}* t *? translation > > *c* - *A*^{-1}* t - **A*^{-1}* c* - offset > > > > > > hope this helps > > Ziv > > > > p.s. When working with ITK always remember that you are dealing with > physical space, distances are in mm/km?, volumes in mm^3?. Don?t be tempted > to measure things in pixels/voxels. > > > > *From: *Andrew Harris > *Date: *Thursday, June 29, 2017 at 1:21 PM > *To: *"Yaniv, Ziv Rafael (NIH/NLM/LHC) [C]" > *Cc: *Insight-users > *Subject: *Re: [ITK-users] [ITK] applying a transform to an ITK Point > object results in it moving the opposite direction from the image > > > > Thanks for getting back to me. Using the inverse transform on the point > selected in the moving image works to transform the point within a > reasonable amount to the homologous feature selected in the fixed image > when I use two identical images with a known offset of 100 voxels in each > direction. However, upon testing identical images with a known rotation > the selected points again fail to line up. The transform I have been using > is the Rigid3DVersorTransform, and the lines of code I'm using to set the > inverse are: > > > > newTransform->SetCenter(oldTransform->GetCenter()); > > oldTransform->GetInverse(newTransform); > > > > Any idea why translation would work but rotation causes a problem? > > > -- > > AH > > > > Andrew Harris, Honours BSc (Medical Physics) > > PhD (CAMPEP) & MClSc Candidate > > ------------------------------------------------------------ > ----------------------------------- > > *This email and any attachments thereto may contain private, > confidential, and privileged materials for the sole use of the intended > recipient. Any reviewing, copying, or distribution of this email (or any > attachments thereto) by other than the intended recipient is strictly > prohibited. If you are not the intended recipient, please contact the > sender immediately and permanently destroy this email and any attachments > thereto.* > > > > On Wed, Jun 28, 2017 at 4:50 PM, Yaniv, Ziv Rafael (NIH/NLM/LHC) [C] < > zivrafael.yaniv at nih.gov> wrote: > > Hello Andrew, > > > > In ITK the result of a registration maps points from the fixed image > coordinate system to the moving coordinate system, so T(p_f) = p_m and the > TRE is || T(p_f) ? p_m||. I suspect you just need to use the inverse > transform. > > > > You may be interested in this SimpleITK notebook (http:// > insightsoftwareconsortium.github.io/SimpleITK-Notebooks/ > Python_html/67_Registration_Semiautomatic_Homework.html) which has a > linked cursor GUI (gui. RegistrationPointDataAquisition). The source code > for the UI is here: https://github.com/InsightSoftwareConsortium/ > SimpleITK-Notebooks/blob/master/Python/gui.py . > > > > hope this helps > > Ziv > > > > > > > > > > *From: *Andrew Harris > *Date: *Wednesday, June 28, 2017 at 3:14 PM > *To: *Insight-users > *Subject: *[ITK-users] [ITK] applying a transform to an ITK Point object > results in it moving the opposite direction from the image > > > > Hi there, > > I have been trying for a while to get this working: I want to be able to > select corresponding points in a fixed and moving image, and determine how > well the moving image is transformed to overlay the fixed image by using > target registration error. The problem is, using the same transform I > applied to a moving image that translated it to the left, the point > selected in the moving image gets translated to the right for example. > > -- > > AH > > > > Andrew Harris, Honours BSc (Medical Physics) > > PhD (CAMPEP) & MClSc Candidate > > ------------------------------------------------------------ > ----------------------------------- > > *This email and any attachments thereto may contain private, > confidential, and privileged materials for the sole use of the intended > recipient. Any reviewing, copying, or distribution of this email (or any > attachments thereto) by other than the intended recipient is strictly > prohibited. If you are not the intended recipient, please contact the > sender immediately and permanently destroy this email and any attachments > thereto.* > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From ahmad.atallah at yandex.com Sat Jul 8 23:02:35 2017 From: ahmad.atallah at yandex.com (ahmad atallah) Date: Sun, 09 Jul 2017 05:02:35 +0200 Subject: [ITK-users] =?utf-8?q?=E2=80=8BGenerating_DRR_Image_through_Regis?= =?utf-8?q?tration_process_in_terms_of_GPU=E2=80=8B?= Message-ID: <2097401499569355@web7j.yandex.ru> An HTML attachment was scrubbed... URL: From greina at eng.ucsd.edu Mon Jul 17 18:52:03 2017 From: greina at eng.ucsd.edu (G Reina) Date: Mon, 17 Jul 2017 15:52:03 -0700 Subject: [ITK-users] Resizing DICOM images Message-ID: I've seen in pydicom and opencv how to resize a DICOM image to an arbitrary pixel resolution (e.g. going from 512x512 down to 128x128). Does SimpleITK have a way to do this for 3D image volumes (i.e. rescale height, width, and slice at the same time? I'm looking to have a method to make my DICOM volumes uniform in shape. Thanks. -Tony -------------- next part -------------- An HTML attachment was scrubbed... URL: From nicolas.courtial at univ-rennes1.fr Tue Jul 18 10:22:15 2017 From: nicolas.courtial at univ-rennes1.fr (Nicolas Courtial) Date: Tue, 18 Jul 2017 16:22:15 +0200 Subject: [ITK-users] MultiThreading, ImageRegionIterator crash In-Reply-To: References: <13d4dc31-8fb8-40c1-ccd8-abe4e45555ef@univ-rennes1.fr> Message-ID: Hi everyone, I'm really sorry I haven't given any news since your answer. I had to change my plans to rush other problems I had to deal with. Anyway, yesterday I've had the occasion to think about everything once from the start, and.... Well, it has driven to the classical "Oh dear, how could I miss that". Anyway, the solution was within the question: remindiner: "e/verything is correct, but the index, for which it's completly crazy ([156245468,0,156245468] or something approching)."/ During my algorithm, I needed to create an image to store energy levels. I had for that created a dedicated module. That one was incomplete, and wasn't correclty setting the start index of the image's region. Sorry again about that, and thanks for your advices! Le 07/06/2017 ? 15:34, D?enan Zuki? a ?crit : > Hi Nicolas, > > ThreadedComputation should be called ThreadedGenerateData, otherwise > the code looks OK. If you overrode AllocateOutputs(), then you might > not have allocated the output (assuming index is wrong for imgIt). Can > you provide a runnable example ? > > Regards, > D?enan Zuki?, PhD, Senior R&D Engineer, Kitware (Carrboro, N.C.) > > On Wed, Jun 7, 2017 at 5:46 AM, Nicolas Courtial > > wrote: > > Hello everyone, > > I'm quite new in ITK world, and I'm currently doing few > experiences in order to learn its logic. > > After few easy exercices, I'm now at a step I want to multithread > a method. > As I did in the past, I've been reading the ITK classes to get > "inspiration", and e- mails from here in case of troubles. > > I'm facing an issue at the moment, and I can't figure why, and how > to solve it. > > My filter works with > > * One 3D InputImage (of any pixel type) > * Two "tool" 3D images, respectively of float and unsigned char > pixel types > > From what I read, I've understood there are two main ways of > multithreading: > > * The old fashioned one using > BeforeThreadedGenerateData/ThreadedGenerateData/AfterThreadedGenerateData > * the one using itk::DomainThreader member. > > As I'm a bit old school, I used the first option. > > My problem remains here: (I changed my variables' name to make it > clearer) > > ThreadedComputation(const OutputImageRegionType > &outputRegionForThread, ThreadIdType threadId) { > itk::ProgressReporter progress(this, threadId, > outputRegionForThread.GetNumberOfPixels()); > typename TOutputImage::Pointer image = this->GetOutput(0); > > itk::ImageRegionIterator< TOutputImage > imgIt(image, > outputRegionForThread); > itk::ImageRegionIterator< FloatImageType> floatIt > (m_MyFloatImage, outputRegionForThread); > .... > > When creating the floatIt iterator, I have a crash. Using a try > catch block, the issue is due to out of bound region. > Everything is correct, but the index, for which it's completly > crazy ([156245468,0,156245468] or something approching). > > I've tried different options to solve this, but rather than doing > witchcraft and at some point getting something working, I'd prefer > to improve my understanding thanks to your expertise. > > Thanks all, > > Nicolas Courtial > > > > > > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > > > > > > ------------------------------------------------------------------------ > Logo AVG > > Cet email a fait l'objet d'une analyse antivirus par le logiciel > antivirus AVG. > www.avg.com > > > <#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2> -------------- next part -------------- An HTML attachment was scrubbed... URL: From zivrafael.yaniv at nih.gov Tue Jul 18 11:08:46 2017 From: zivrafael.yaniv at nih.gov (Yaniv, Ziv Rafael (NIH/NLM/LHC) [C]) Date: Tue, 18 Jul 2017 15:08:46 +0000 Subject: [ITK-users] [ITK] Resizing DICOM images In-Reply-To: References: Message-ID: <4198F266-AF5B-4539-823F-8A0CB835BB44@mail.nih.gov> Hello Tony, Short answer is yes. To shrink a volume using integral sizes, use the BinShrinkImageFilter (https://itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_1BinShrinkImageFilter.html). Using the procedural interface to shrink an image by 4 in x, by 4 in y and by 2 in z would be: bShrinkImage = sitk.BinShrink(img, [4,4,2]) The BinShrink filter also averages the neighborhood, so it deals to some extent with potential aliasing. Don?t use this filter if your volume represents a discrete set of labels (i.e. segmentation). Longer answer: For truly arbitrary resizing use the ResampleImageFilter (https://itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_1ResampleImageFilter.html). Using the procedural interface to modify the original (style is verbose for clarity): new_x_size = 700 #upsample new_y_size = 64 #downsample new_z_size = 5 #downsample new_size = [new_x_size, new_y_size, new_z_size] new_spacing = [old_sz*old_spc/new_sz for old_sz, old_spc, new_sz in zip(img.GetSize(), img.GetSpacing(), new_size)] interpolator_type = sitk.sitkLinear new_img = sitk.Resample(img, new_size, sitk.Transform(), interpolator_type, img.GetOrigin(), new_spacing, img.GetDirection(), 0.0, img.GetPixelIDValue()) The ResampleImageFilter does not deal with aliasing, so if you are downsampling it is recommended to blur prior to resampling. If you are resampling a volume with discrete labels you would use the sitk.sitkNearestNeighbor interpolator type. hope this helps Ziv From: G Reina Date: Monday, July 17, 2017 at 6:52 PM To: "insight-users at itk.org" Subject: [ITK] [ITK-users] Resizing DICOM images I've seen in pydicom and opencv how to resize a DICOM image to an arbitrary pixel resolution (e.g. going from 512x512 down to 128x128). Does SimpleITK have a way to do this for 3D image volumes (i.e. rescale height, width, and slice at the same time? I'm looking to have a method to make my DICOM volumes uniform in shape. Thanks. -Tony -------------- next part -------------- An HTML attachment was scrubbed... URL: From greina at eng.ucsd.edu Tue Jul 18 12:34:20 2017 From: greina at eng.ucsd.edu (G Reina) Date: Tue, 18 Jul 2017 09:34:20 -0700 Subject: [ITK-users] [ITK] Resizing DICOM images In-Reply-To: <4198F266-AF5B-4539-823F-8A0CB835BB44@mail.nih.gov> References: <4198F266-AF5B-4539-823F-8A0CB835BB44@mail.nih.gov> Message-ID: Thanks so much. That's very helpful. Tony On Jul 18, 2017 8:09 AM, "Yaniv, Ziv Rafael (NIH/NLM/LHC) [C]" < zivrafael.yaniv at nih.gov> wrote: > Hello Tony, > > > > Short answer is yes. > > > > To shrink a volume using integral sizes, use the BinShrinkImageFilter ( > https://itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_ > 1BinShrinkImageFilter.html). > > Using the procedural interface to shrink an image by 4 in x, by 4 in y and > by 2 in z would be: > > bShrinkImage = sitk.BinShrink(img, [4,4,2]) > > > > The BinShrink filter also averages the neighborhood, so it deals to some > extent with potential aliasing. Don?t use this filter if your volume > represents a discrete set of labels (i.e. segmentation). > > > > > > Longer answer: > > > > For truly arbitrary resizing use the ResampleImageFilter (https://itk.org/ > SimpleITKDoxygen/html/classitk_1_1simple_1_1ResampleImageFilter.html). > > > > Using the procedural interface to modify the original (style is verbose > for clarity): > > > > new_x_size = 700 #upsample > > new_y_size = 64 #downsample > > new_z_size = 5 #downsample > > new_size = [new_x_size, new_y_size, new_z_size] > > new_spacing = [old_sz*old_spc/new_sz for old_sz, old_spc, new_sz in > zip(img.GetSize(), img.GetSpacing(), new_size)] > > > > interpolator_type = sitk.sitkLinear > > > > new_img = sitk.Resample(img, new_size, sitk.Transform(), > interpolator_type, img.GetOrigin(), new_spacing, img.GetDirection(), 0.0, > img.GetPixelIDValue()) > > > > The ResampleImageFilter does not deal with aliasing, so if you are > downsampling it is recommended to blur prior to resampling. If you are > resampling a volume with discrete labels you would use the > sitk.sitkNearestNeighbor > > interpolator type. > > > > hope this helps > > Ziv > > > > > > > > > > *From: *G Reina > *Date: *Monday, July 17, 2017 at 6:52 PM > *To: *"insight-users at itk.org" > *Subject: *[ITK] [ITK-users] Resizing DICOM images > > > > I've seen in pydicom and opencv how to resize a DICOM image to an > arbitrary pixel resolution (e.g. going from 512x512 down to 128x128). > > > > Does SimpleITK have a way to do this for 3D image volumes (i.e. rescale > height, width, and slice at the same time? > > > > I'm looking to have a method to make my DICOM volumes uniform in shape. > > > > Thanks. > > -Tony > > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From bill.lorensen at gmail.com Tue Jul 18 13:31:06 2017 From: bill.lorensen at gmail.com (Bill Lorensen) Date: Tue, 18 Jul 2017 13:31:06 -0400 Subject: [ITK-users] [ITK] Resizing DICOM images In-Reply-To: References: <4198F266-AF5B-4539-823F-8A0CB835BB44@mail.nih.gov> Message-ID: If you don't mind using C++, here is an example: https://itk.org/Wiki/ITK/Examples/DICOM/ResampleDICOM On Tue, Jul 18, 2017 at 12:34 PM, G Reina wrote: > Thanks so much. > > That's very helpful. > > Tony > > On Jul 18, 2017 8:09 AM, "Yaniv, Ziv Rafael (NIH/NLM/LHC) [C]" > wrote: >> >> Hello Tony, >> >> >> >> Short answer is yes. >> >> >> >> To shrink a volume using integral sizes, use the BinShrinkImageFilter >> (https://itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_1BinShrinkImageFilter.html). >> >> Using the procedural interface to shrink an image by 4 in x, by 4 in y and >> by 2 in z would be: >> >> bShrinkImage = sitk.BinShrink(img, [4,4,2]) >> >> >> >> The BinShrink filter also averages the neighborhood, so it deals to some >> extent with potential aliasing. Don?t use this filter if your volume >> represents a discrete set of labels (i.e. segmentation). >> >> >> >> >> >> Longer answer: >> >> >> >> For truly arbitrary resizing use the ResampleImageFilter >> (https://itk.org/SimpleITKDoxygen/html/classitk_1_1simple_1_1ResampleImageFilter.html). >> >> >> >> Using the procedural interface to modify the original (style is verbose >> for clarity): >> >> >> >> new_x_size = 700 #upsample >> >> new_y_size = 64 #downsample >> >> new_z_size = 5 #downsample >> >> new_size = [new_x_size, new_y_size, new_z_size] >> >> new_spacing = [old_sz*old_spc/new_sz for old_sz, old_spc, new_sz in >> zip(img.GetSize(), img.GetSpacing(), new_size)] >> >> >> >> interpolator_type = sitk.sitkLinear >> >> >> >> new_img = sitk.Resample(img, new_size, sitk.Transform(), >> interpolator_type, img.GetOrigin(), new_spacing, img.GetDirection(), 0.0, >> img.GetPixelIDValue()) >> >> >> >> The ResampleImageFilter does not deal with aliasing, so if you are >> downsampling it is recommended to blur prior to resampling. If you are >> resampling a volume with discrete labels you would use the >> sitk.sitkNearestNeighbor >> >> interpolator type. >> >> >> >> hope this helps >> >> Ziv >> >> >> >> >> >> >> >> >> >> From: G Reina >> Date: Monday, July 17, 2017 at 6:52 PM >> To: "insight-users at itk.org" >> Subject: [ITK] [ITK-users] Resizing DICOM images >> >> >> >> I've seen in pydicom and opencv how to resize a DICOM image to an >> arbitrary pixel resolution (e.g. going from 512x512 down to 128x128). >> >> >> >> Does SimpleITK have a way to do this for 3D image volumes (i.e. rescale >> height, width, and slice at the same time? >> >> >> >> I'm looking to have a method to make my DICOM volumes uniform in shape. >> >> >> >> Thanks. >> >> -Tony >> >> > > > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > -- Unpaid intern in BillsBasement at noware dot com From tapash1991 at gmail.com Thu Jul 20 09:52:03 2017 From: tapash1991 at gmail.com (tapash) Date: Thu, 20 Jul 2017 06:52:03 -0700 (MST) Subject: [ITK-users] error in ItkConceptchecking.h Message-ID: <1500558723695-7590051.post@n2.nabble.com> while I trying to build my project. its throwing an error Error 42 error C2440: 'initializing' : cannot convert from 'itk::Concept::Detail::UniqueType_bool' to 'itk::Concept::Detail::UniqueType_bool' plz help me to remove this error -- View this message in context: http://itk-insight-users.2283740.n2.nabble.com/error-in-ItkConceptchecking-h-tp7590051.html Sent from the ITK Insight Users mailing list archive at Nabble.com. From dzenanz at gmail.com Thu Jul 20 11:06:24 2017 From: dzenanz at gmail.com (=?UTF-8?B?RMW+ZW5hbiBadWtpxIc=?=) Date: Thu, 20 Jul 2017 11:06:24 -0400 Subject: [ITK-users] error in ItkConceptchecking.h In-Reply-To: <1500558723695-7590051.post@n2.nabble.com> References: <1500558723695-7590051.post@n2.nabble.com> Message-ID: Hi Tapash, it looks like you are trying to instantiate a template class with a type which that class does not support. If you give us the complete error message (including where it is being originally caused from) we should be able to help you more meaningfully. Regards, D?enan Zuki?, PhD, Senior R&D Engineer, Kitware (Carrboro, N.C.) On Thu, Jul 20, 2017 at 9:52 AM, tapash wrote: > while I trying to build my project. its throwing an error > > Error 42 error C2440: 'initializing' : cannot convert from > 'itk::Concept::Detail::UniqueType_bool' to > 'itk::Concept::Detail::UniqueType_bool' > plz help me to remove this error > > > > -- > View this message in context: http://itk-insight-users. > 2283740.n2.nabble.com/error-in-ItkConceptchecking-h-tp7590051.html > Sent from the ITK Insight Users mailing list archive at Nabble.com. > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > -------------- next part -------------- An HTML attachment was scrubbed... URL: From dzenanz at gmail.com Thu Jul 20 11:32:39 2017 From: dzenanz at gmail.com (=?UTF-8?B?RMW+ZW5hbiBadWtpxIc=?=) Date: Thu, 20 Jul 2017 11:32:39 -0400 Subject: [ITK-users] Fwd: error in ItkConceptchecking.h In-Reply-To: References: <1500558723695-7590051.post@n2.nabble.com> Message-ID: ---------- Forwarded message ---------- From: D?enan Zuki? Date: Thu, Jul 20, 2017 at 11:31 AM Subject: Re: [ITK-users] error in ItkConceptchecking.h To: Tapash Barman Hi Tapash, in a working program I have a line like this: typedef itk::MultiplyImageFilter MultiplyType; if I change it into this: typedef itk::MultiplyImageFilter MultiplyType; I get the below, many lines long error message. This is the kind of complete error message I want you to copy-paste, not just the last line of it. If you are using Visual Studio, it is in the build log, not error list. Regards, D?enan Zuki?, PhD, Senior R&D Engineer, Kitware (Carrboro, N.C.) C:\my\program.cxx(117): error C2660: 'itk::BinaryFunctorImageFilter< TInputImage1,TInputImage2,TOutputImage,int>::SetConstant' : function does not take 1 arguments with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(59) : see declaration of 'itk:: BinaryFunctorImageFilter:: ConstPointer' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(111) : see declaration of 'itk:: BinaryFunctorImageFilter:: Input2ImagePixelType' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\core\common\include\itkConceptChecking.h(579) : see declaration of 'D2' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(59) : see declaration of 'itk:: BinaryFunctorImageFilter:: ConstPointer' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(111) : see declaration of 'itk:: BinaryFunctorImageFilter:: Input2ImagePixelType' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\core\common\include\itkConceptChecking.h(579) : see declaration of 'D2' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(59) : see declaration of 'itk:: BinaryFunctorImageFilter:: ConstPointer' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(111) : see declaration of 'itk:: BinaryFunctorImageFilter:: Input2ImagePixelType' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\core\common\include\itkConceptChecking.h(579) : see declaration of 'D2' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(59) : see declaration of 'itk:: BinaryFunctorImageFilter:: ConstPointer' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(111) : see declaration of 'itk:: BinaryFunctorImageFilter:: Input2ImagePixelType' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\core\common\include\itkConceptChecking.h(579) : see declaration of 'D2' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(59) : see declaration of 'itk:: BinaryFunctorImageFilter:: ConstPointer' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(111) : see declaration of 'itk:: BinaryFunctorImageFilter:: Input2ImagePixelType' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\core\common\include\itkConceptChecking.h(579) : see declaration of 'D2' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(59) : see declaration of 'itk:: BinaryFunctorImageFilter:: ConstPointer' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(111) : see declaration of 'itk:: BinaryFunctorImageFilter:: Input2ImagePixelType' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\core\common\include\itkConceptChecking.h(579) : see declaration of 'D2' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(59) : see declaration of 'itk:: BinaryFunctorImageFilter:: ConstPointer' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(111) : see declaration of 'itk:: BinaryFunctorImageFilter:: Input2ImagePixelType' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\core\common\include\itkConceptChecking.h(579) : see declaration of 'D2' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(59) : see declaration of 'itk:: BinaryFunctorImageFilter:: ConstPointer' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(111) : see declaration of 'itk:: BinaryFunctorImageFilter:: Input2ImagePixelType' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\core\common\include\itkConceptChecking.h(579) : see declaration of 'D2' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(59) : see declaration of 'itk:: BinaryFunctorImageFilter:: ConstPointer' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\filtering\imagefilterbase\include\ itkBinaryFunctorImageFilter.h(111) : see declaration of 'itk:: BinaryFunctorImageFilter:: Input2ImagePixelType' with [ TInputImage1=ImageType , TInputImage2=double , TOutputImage=ImageType ] C:\ITK\modules\core\common\include\itkConceptChecking.h(579) : see declaration of 'D2' C:\ITK\Modules\Filtering\ImageIntensity\include\itkMultiplyImageFilter.h(34) : see declaration of 'itk::Functor::Mult' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' C:\ITK\modules\core\common\include\itkConceptChecking.h(352) : see declaration of 'itk::Concept::MultiplyOperator' On Thu, Jul 20, 2017 at 11:14 AM, Tapash Barman wrote: > Hii..sir the error is in the itkconceptcheckink.h file..if u open this > header file u can see this In integer template > On 20-Jul-2017 8:36 pm, "D?enan Zuki?" wrote: > >> Hi Tapash, >> >> it looks like you are trying to instantiate a template class with a type >> which that class does not support. If you give us the complete error >> message (including where it is being originally caused from) we should be >> able to help you more meaningfully. >> >> Regards, >> D?enan Zuki?, PhD, Senior R&D Engineer, Kitware (Carrboro, N.C.) >> >> On Thu, Jul 20, 2017 at 9:52 AM, tapash wrote: >> >>> while I trying to build my project. its throwing an error >>> >>> Error 42 error C2440: 'initializing' : cannot convert from >>> 'itk::Concept::Detail::UniqueType_bool' to >>> 'itk::Concept::Detail::UniqueType_bool' >>> plz help me to remove this error >>> >>> >>> >>> -- >>> View this message in context: http://itk-insight-users.22837 >>> 40.n2.nabble.com/error-in-ItkConceptchecking-h-tp7590051.html >>> Sent from the ITK Insight Users mailing list archive at Nabble.com. >>> _____________________________________ >>> Powered by www.kitware.com >>> >>> Visit other Kitware open-source projects at >>> http://www.kitware.com/opensource/opensource.html >>> >>> Kitware offers ITK Training Courses, for more information visit: >>> http://www.kitware.com/products/protraining.php >>> >>> Please keep messages on-topic and check the ITK FAQ at: >>> http://www.itk.org/Wiki/ITK_FAQ >>> >>> Follow this link to subscribe/unsubscribe: >>> http://public.kitware.com/mailman/listinfo/insight-users >>> >> >> -------------- next part -------------- An HTML attachment was scrubbed... URL: From tapash1991 at gmail.com Fri Jul 21 02:30:18 2017 From: tapash1991 at gmail.com (tapash) Date: Thu, 20 Jul 2017 23:30:18 -0700 (MST) Subject: [ITK-users] Fwd: error in ItkConceptchecking.h In-Reply-To: References: <1500558723695-7590051.post@n2.nabble.com> Message-ID: <1500618618887-7590054.post@n2.nabble.com> /** Concept requiring T to be integer. */ template< typename T > struct IsInteger { typedef IsInteger Self; itkStaticConstMacro(Integral, bool, NumericTraits< T >::is_integer); struct Constraints { typedef Detail::UniqueType_bool< true > TrueT; typedef Detail::UniqueType_bool< itkGetStaticConstMacro(Integral) > IntegralT; void constraints() { *IntegralT a = TrueT(); * Detail::IgnoreUnusedVariable(a); } }; itkConceptConstraintsMacro(); }; the line in the bold is throwing this error...... Error 2 error C2440: 'initializing' : cannot convert from 'itk::Concept::Detail::UniqueType_bool' to 'itk::Concept::Detail::UniqueType_bool' c:\insighttoolkit-4.6.0\modules\core\common\include\itkConceptChecking.h 730 -- View this message in context: http://itk-insight-users.2283740.n2.nabble.com/error-in-ItkConceptchecking-h-tp7590051p7590054.html Sent from the ITK Insight Users mailing list archive at Nabble.com. From tapash1991 at gmail.com Fri Jul 21 09:28:37 2017 From: tapash1991 at gmail.com (tapash) Date: Fri, 21 Jul 2017 06:28:37 -0700 (MST) Subject: [ITK-users] Fwd: error in ItkConceptchecking.h In-Reply-To: References: <1500558723695-7590051.post@n2.nabble.com> Message-ID: <1500643717661-7590055.post@n2.nabble.com> BoneSegmentation.cpp 6> Unknown compiler version - please run the configure tests and report the results 6>..\BoneSegmentation.cpp(141): warning C4996: 'mkdir': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _mkdir. See online help for details. 6> C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\direct.h(140) : see declaration of 'mkdir' *6>e:\tapash project\insighttoolkit-4.6.0\modules\core\common\include\itkConceptChecking.h(729): error C2440: 'initializing' : cannot convert from 'itk::Concept::Detail::UniqueType_bool' to 'itk::Concept::Detail::UniqueType_bool'* 6> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called 6> e:\tapash project\insighttoolkit-4.6.0\modules\core\common\include\itkConceptChecking.h(728) : while compiling class template member function 'void itk::Concept::IsInteger::Constraints::constraints(void)' 6> e:\tapash project\insighttoolkit-4.6.0\modules\core\common\include\itkConceptChecking.h(735) : see reference to function template instantiation 'void itk::Concept::IsInteger::Constraints::constraints(void)' being compiled 6> e:\tapash project\insighttoolkit-4.6.0\modules\core\common\include\itkConceptChecking.h(735) : see reference to class template instantiation 'itk::Concept::IsInteger::Constraints' being compiled 6> e:\tapash project\insighttoolkit-4.6.0\modules\core\common\include\itkConceptChecking.h(735) : while compiling class template member function 'void itk::Concept::IsInteger::Enforcer(void)' 6> e:\tapash project\insighttoolkit-4.6.0\modules\segmentation\connectedcomponents\include\itkConnectedComponentImageFilter.h(143) : see reference to class template instantiation 'itk::Concept::IsInteger' being compiled 6> E:\tapash project\imagesim\utils\FilterUtils.h(84) : see reference to class template instantiation 'itk::ConnectedComponentImageFilter' being compiled 6> with 6> [ 6> InputImage=ShortImage 6> , OutputImage=FloatImage 6> , TInputImage=ShortImage 6> ] 6> e:\tapash project\imagesim\01-Preprocessing.h(128) : see reference to class template instantiation 'FilterUtils' being compiled 6> BooleanOperationWidget.cpp -- View this message in context: http://itk-insight-users.2283740.n2.nabble.com/error-in-ItkConceptchecking-h-tp7590051p7590055.html Sent from the ITK Insight Users mailing list archive at Nabble.com. From dzenanz at gmail.com Fri Jul 21 10:46:09 2017 From: dzenanz at gmail.com (=?UTF-8?B?RMW+ZW5hbiBadWtpxIc=?=) Date: Fri, 21 Jul 2017 10:46:09 -0400 Subject: [ITK-users] Fwd: error in ItkConceptchecking.h In-Reply-To: <1500643717661-7590055.post@n2.nabble.com> References: <1500558723695-7590051.post@n2.nabble.com> <1500643717661-7590055.post@n2.nabble.com> Message-ID: Hi Tapash, in E:\tapash project\imagesim\utils\FilterUtils.h(84), "Concept requiring T to be integer" means you should instantiate ConnectedComponentImageFilter with OutputImage=ShortImage, *not* OutputImage=FloatImage. If for some reason you want to convert your component indices into floats, you can then apply CastImageFilter to do that. Regards, D?enan Zuki?, PhD, Senior R&D Engineer, Kitware (Carrboro, N.C.) On Fri, Jul 21, 2017 at 9:28 AM, tapash wrote: > BoneSegmentation.cpp > 6> Unknown compiler version - please run the configure tests and report > the > results > 6>..\BoneSegmentation.cpp(141): warning C4996: 'mkdir': The POSIX name for > this item is deprecated. Instead, use the ISO C++ conformant name: _mkdir. > See online help for details. > 6> C:\Program Files (x86)\Microsoft Visual Studio > 12.0\VC\include\direct.h(140) : see declaration of 'mkdir' > *6>e:\tapash > project\insighttoolkit-4.6.0\modules\core\common\include\ > itkConceptChecking.h(729): > error C2440: 'initializing' : cannot convert from > 'itk::Concept::Detail::UniqueType_bool' to > 'itk::Concept::Detail::UniqueType_bool'* > 6> No user-defined-conversion operator available that can perform > this conversion, or the operator cannot be called > 6> e:\tapash > project\insighttoolkit-4.6.0\modules\core\common\include\ > itkConceptChecking.h(728) > : while compiling class template member function 'void > itk::Concept::IsInteger::Constraints::constraints(void)' > 6> e:\tapash > project\insighttoolkit-4.6.0\modules\core\common\include\ > itkConceptChecking.h(735) > : see reference to function template instantiation 'void > itk::Concept::IsInteger::Constraints::constraints(void)' being > compiled > 6> e:\tapash > project\insighttoolkit-4.6.0\modules\core\common\include\ > itkConceptChecking.h(735) > : see reference to class template instantiation > 'itk::Concept::IsInteger::Constraints' being compiled > 6> e:\tapash > project\insighttoolkit-4.6.0\modules\core\common\include\ > itkConceptChecking.h(735) > : while compiling class template member function 'void > itk::Concept::IsInteger::Enforcer(void)' > 6> e:\tapash > project\insighttoolkit-4.6.0\modules\segmentation\ > connectedcomponents\include\itkConnectedComponentImageFilter.h(143) > : see reference to class template instantiation > 'itk::Concept::IsInteger' being compiled > 6> E:\tapash project\imagesim\utils\FilterUtils.h(84) : see > reference to class template instantiation > 'itk::ConnectedComponentImageFilter' > being compiled > 6> with > 6> [ > 6> InputImage=ShortImage > 6> , OutputImage=FloatImage > 6> , TInputImage=ShortImage > 6> ] > 6> e:\tapash project\imagesim\01-Preprocessing.h(128) : see > reference to class template instantiation > 'FilterUtils' being compiled > 6> BooleanOperationWidget.cpp > > > > -- > View this message in context: http://itk-insight-users. > 2283740.n2.nabble.com/error-in-ItkConceptchecking-h-tp7590051p7590055.html > Sent from the ITK Insight Users mailing list archive at Nabble.com. > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > -------------- next part -------------- An HTML attachment was scrubbed... URL: From andx_roo at live.com Tue Jul 25 13:05:08 2017 From: andx_roo at live.com (Andaharoo) Date: Tue, 25 Jul 2017 10:05:08 -0700 (MST) Subject: [ITK-users] Problems Using GPU Filters In-Reply-To: References: <1498789176254-7590036.post@n2.nabble.com> Message-ID: <1501002308962-7590057.post@n2.nabble.com> How exactly do I load/setup a GPUImage. There seem to be tons of examples on how to make GPU filters but none on how to use them? Or convert between a regular itk image and a GPUImage. -- View this message in context: http://itk-insight-users.2283740.n2.nabble.com/Problems-Using-GPU-Filters-tp7590036p7590057.html Sent from the ITK Insight Users mailing list archive at Nabble.com. From swetha.bsharma at gmail.com Thu Jul 27 07:56:30 2017 From: swetha.bsharma at gmail.com (Swetha Sharma) Date: Thu, 27 Jul 2017 17:26:30 +0530 Subject: [ITK-users] Read .vtk file and write it as binary stl file Message-ID: Hi, I have .vtk file which i want to read and convert to binary stl file. The documentation has a function WriteBinarySTL (vtkPoints *pts, vtkCellArray *polys, vtkCellArray *strips) . How do I get the information about the vtkpoints and the cellarray? -swetha -------------- next part -------------- An HTML attachment was scrubbed... URL: From dzenanz at gmail.com Thu Jul 27 08:04:43 2017 From: dzenanz at gmail.com (=?UTF-8?B?RMW+ZW5hbiBadWtpxIc=?=) Date: Thu, 27 Jul 2017 08:04:43 -0400 Subject: [ITK-users] Read .vtk file and write it as binary stl file In-Reply-To: References: Message-ID: Hi Swetha, I think you wanted to send this to vtkusers at vtk.org, not insight-users at itk.org Regards, D?enan Zuki?, PhD, Senior R&D Engineer, Kitware (Carrboro, N.C.) On Thu, Jul 27, 2017 at 7:56 AM, Swetha Sharma wrote: > Hi, > > I have .vtk file which i want to read and convert to binary stl file. > The documentation has a function > WriteBinarySTL > > (vtkPoints * > pts, vtkCellArray > *polys, vtkC > ellArray *strips) > . How do I get the information about the vtkpoints and the cellarray? > > -swetha > > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From thanosxania at gmail.com Thu Jul 27 08:08:37 2017 From: thanosxania at gmail.com (thanos thanos) Date: Thu, 27 Jul 2017 14:08:37 +0200 Subject: [ITK-users] Cardiac Deformation using Segmentation and Registration of Ultrasound Images Message-ID: Hello everyone, The past months I have been working on tasks of Segmentation and Registration of 4D ultrasound images so I can eventually do a proper Cardiac Deformation analysis. Unfortunately I am struggling on my own to solve these problems so I still haven't found a proper workflow and this is why I am posting here in case someone has a suggestion or a recommendation. For the acquisition of my data, a pig heart was placed inside a water tank with the 4D transducer on the bottom of the tank (the apex of the heart was about 5 cm from the transducer) and with around 50 volumes per second I obtained images of 120x90x80, that after masking I ended up with volumes of 75x70x52 (x,y,z). So far, I use Curvature Anisotropic Diffusion using the ITK libraries in order to perform an automatic segmentation using Active Contours (with Matlab). I filtered my data, mostly to assist my 2D segmentation algorithm, which I perform slice by slice on the z axis. I obtain a 3D model using the isosurfaces. Then I tried both the Demons registration and the Bsplines registration on the 3D volumes. I tried both on the original (unsegmented) data and two segmented volumes, but I can not say that I am quite satisfied with any of the results. So my questions are the following : 1) Is it necessary to perform segmentation before the registration since my heart is placed in a water tank, so there are no other organs around? 2) Should the registration be done on the filtered or the unfiltered data? 3) I am not satisfied at all with my segmentation algorithm since active contours are quite sensitive to noise and because of the nature of the data I have to use different parameters for every 4-5 slices. Therefore I was thinking to perform an almost manual segmentation on one volume and then use registration for the segmentation of the rest (if that is necessary). So I am now studying and trying to say if something like that is possible (and especially on ITK). If someone knows something about it, I would be happy to hear. 4) What would be a proper number of grid points for my 75x70x52 images, when using the B-Splines registration? I am sorry for the long post but I have been struggling for too long with this problem and I would really appreciate any kind of help. Best regards, Thanos -------------- next part -------------- An HTML attachment was scrubbed... URL: From dzenanz at gmail.com Thu Jul 27 10:22:00 2017 From: dzenanz at gmail.com (=?UTF-8?B?RMW+ZW5hbiBadWtpxIc=?=) Date: Thu, 27 Jul 2017 10:22:00 -0400 Subject: [ITK-users] Cardiac Deformation using Segmentation and Registration of Ultrasound Images In-Reply-To: References: Message-ID: Hi Thanos, segmentation is not a trivial task, and usually requires a lot of user intervention/interaction to achieve a satisfactory result. Completely segmenting one case, and then registering other cases to the segmented one and transferring labels is called atlas segmentation. To figure out proper registration parameters, you could play with BRAINSFit module of 3D Slicer (docs ), which is built on top of ITK and provides a nice user interface with significant number of options to tweak. For B-Splines, common number of grid points are up to maybe 13x13x13. Since you have a high frame rate, you would probably benefit from initializing registration of time point n+1 by resulting transform from time point n. Regards, D?enan Zuki?, PhD, Senior R&D Engineer, Kitware (Carrboro, N.C.) On Thu, Jul 27, 2017 at 8:08 AM, thanos thanos wrote: > Hello everyone, > > The past months I have been working on tasks of Segmentation and > Registration of 4D ultrasound images so I can eventually do a proper > Cardiac Deformation analysis. Unfortunately I am struggling on my own to > solve these problems so I still haven't found a proper workflow and this is > why I am posting here in case someone has a suggestion or a recommendation. > > For the acquisition of my data, a pig heart was placed inside a water tank > with the 4D transducer on the bottom of the tank (the apex of the heart was > about 5 cm from the transducer) and with around 50 volumes per second I > obtained images of 120x90x80, that after masking I ended up with volumes of > 75x70x52 (x,y,z). > > So far, I use Curvature Anisotropic Diffusion using the ITK libraries in > order to perform an automatic segmentation using Active Contours (with > Matlab). I filtered my data, mostly to assist my 2D segmentation algorithm, > which I perform slice by slice on the z axis. I obtain a 3D model using the > isosurfaces. > > Then I tried both the Demons registration and the Bsplines registration on > the 3D volumes. I tried both on the original (unsegmented) data and two > segmented volumes, but I can not say that I am quite satisfied with any of > the results. > > So my questions are the following : > 1) Is it necessary to perform segmentation before the registration since > my heart is placed in a water tank, so there are no other organs around? > 2) Should the registration be done on the filtered or the unfiltered data? > 3) I am not satisfied at all with my segmentation algorithm since active > contours are quite sensitive to noise and because of the nature of the data > I have to use different parameters for every 4-5 slices. Therefore I was > thinking to perform an almost manual segmentation on one volume and then > use registration for the segmentation of the rest (if that is necessary). > So I am now studying and trying to say if something like that is possible > (and especially on ITK). If someone knows something about it, I would be > happy to hear. > 4) What would be a proper number of grid points for my 75x70x52 images, > when using the B-Splines registration? > > I am sorry for the long post but I have been struggling for too long with > this problem and I would really appreciate any kind of help. > > Best regards, > Thanos > > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From lasso at queensu.ca Thu Jul 27 10:34:55 2017 From: lasso at queensu.ca (Andras Lasso) Date: Thu, 27 Jul 2017 14:34:55 +0000 Subject: [ITK-users] [ITK] Cardiac Deformation using Segmentation and Registration of Ultrasound Images In-Reply-To: References: Message-ID: You may also give elastix registration toolbox a try (http://elastix.isi.uu.nl/). It is based on ITK but it adds a number of registration classes. My experience is that with BRAINS you often need to tune parameters to get meaningful results, while elastix gives great results with default settings for all kinds of input data. Elastix is available in 3D Slicer, too (by installing SlicerElastix extension). Andras From: Community [mailto:community-bounces at itk.org] On Behalf Of D?enan Zukic Sent: Thursday, July 27, 2017 10:22 AM To: thanos thanos Cc: Insight-users Subject: Re: [ITK] [ITK-users] Cardiac Deformation using Segmentation and Registration of Ultrasound Images Hi Thanos, segmentation is not a trivial task, and usually requires a lot of user intervention/interaction to achieve a satisfactory result. Completely segmenting one case, and then registering other cases to the segmented one and transferring labels is called atlas segmentation. To figure out proper registration parameters, you could play with BRAINSFit module of 3D Slicer (docs), which is built on top of ITK and provides a nice user interface with significant number of options to tweak. For B-Splines, common number of grid points are up to maybe 13x13x13. Since you have a high frame rate, you would probably benefit from initializing registration of time point n+1 by resulting transform from time point n. Regards, D?enan Zuki?, PhD, Senior R&D Engineer, Kitware (Carrboro, N.C.) On Thu, Jul 27, 2017 at 8:08 AM, thanos thanos > wrote: Hello everyone, The past months I have been working on tasks of Segmentation and Registration of 4D ultrasound images so I can eventually do a proper Cardiac Deformation analysis. Unfortunately I am struggling on my own to solve these problems so I still haven't found a proper workflow and this is why I am posting here in case someone has a suggestion or a recommendation. For the acquisition of my data, a pig heart was placed inside a water tank with the 4D transducer on the bottom of the tank (the apex of the heart was about 5 cm from the transducer) and with around 50 volumes per second I obtained images of 120x90x80, that after masking I ended up with volumes of 75x70x52 (x,y,z). So far, I use Curvature Anisotropic Diffusion using the ITK libraries in order to perform an automatic segmentation using Active Contours (with Matlab). I filtered my data, mostly to assist my 2D segmentation algorithm, which I perform slice by slice on the z axis. I obtain a 3D model using the isosurfaces. Then I tried both the Demons registration and the Bsplines registration on the 3D volumes. I tried both on the original (unsegmented) data and two segmented volumes, but I can not say that I am quite satisfied with any of the results. So my questions are the following : 1) Is it necessary to perform segmentation before the registration since my heart is placed in a water tank, so there are no other organs around? 2) Should the registration be done on the filtered or the unfiltered data? 3) I am not satisfied at all with my segmentation algorithm since active contours are quite sensitive to noise and because of the nature of the data I have to use different parameters for every 4-5 slices. Therefore I was thinking to perform an almost manual segmentation on one volume and then use registration for the segmentation of the rest (if that is necessary). So I am now studying and trying to say if something like that is possible (and especially on ITK). If someone knows something about it, I would be happy to hear. 4) What would be a proper number of grid points for my 75x70x52 images, when using the B-Splines registration? I am sorry for the long post but I have been struggling for too long with this problem and I would really appreciate any kind of help. Best regards, Thanos _____________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Kitware offers ITK Training Courses, for more information visit: http://www.kitware.com/products/protraining.php Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/insight-users -------------- next part -------------- An HTML attachment was scrubbed... URL: From nickmarch31 at yahoo.com Thu Jul 27 15:08:10 2017 From: nickmarch31 at yahoo.com (Nick Cullen) Date: Thu, 27 Jul 2017 19:08:10 +0000 (UTC) Subject: [ITK-users] error wrapping itkDummy filter from example References: <753349640.772218.1501182490191.ref@mail.yahoo.com> Message-ID: <753349640.772218.1501182490191@mail.yahoo.com> Trying to wrap the filter for python as in the given example from?ITK/Release 4/Wrapping/BuildProcess - KitwarePublic | | | | | | | | | | | ITK/Release 4/Wrapping/BuildProcess - KitwarePublic | | | | But I get an error:CMake Error at CMakeLists.txt:9 (WRAP_LIBRARY):?? Unknown CMake command "WRAP_LIBRARY". Anyone know why this might be?? Thanks! -------------- next part -------------- An HTML attachment was scrubbed... URL: From matt.mccormick at kitware.com Thu Jul 27 15:21:47 2017 From: matt.mccormick at kitware.com (Matt McCormick) Date: Thu, 27 Jul 2017 15:21:47 -0400 Subject: [ITK-users] error wrapping itkDummy filter from example In-Reply-To: <753349640.772218.1501182490191@mail.yahoo.com> References: <753349640.772218.1501182490191.ref@mail.yahoo.com> <753349640.772218.1501182490191@mail.yahoo.com> Message-ID: Hi Nick, That page is currently outdated -- please find a detailed, updated, clean guide to the wrapping in the ITK Software Guide: https://itk.org/ITKSoftwareGuide/html/Book1/ITKSoftwareGuide-Book1ch9.html#x48-1530009.5 The best way to get started is to begin with the ITKModuleTemplate: https://github.com/InsightSoftwareConsortium/ITKModuleTemplate Hope this helps, Matt On Thu, Jul 27, 2017 at 3:08 PM, Nick Cullen via Insight-users < insight-users at itk.org> wrote: > Trying to wrap the filter for python as in the given example from ITK/Release > 4/Wrapping/BuildProcess - KitwarePublic > > > ITK/Release 4/Wrapping/BuildProcess - KitwarePublic > > > > But I get an error: > CMake Error at CMakeLists.txt:9 (WRAP_LIBRARY): > Unknown CMake command "WRAP_LIBRARY". > > Anyone know why this might be? > > Thanks! > > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From Anchit.Dhar at mathworks.com Fri Jul 28 13:58:42 2017 From: Anchit.Dhar at mathworks.com (Anchit Dhar) Date: Fri, 28 Jul 2017 17:58:42 +0000 Subject: [ITK-users] 3-D support for BinaryPruningImageFilter Message-ID: <484A4E48-73AF-4624-A9F1-09266DDA5911@mathworks.com> Hello, I have written a module to prune branches of a 3-D Skeleton using ITK?s BinaryPruningImageFilter. The filter is returning unexpected pruned results for a 3-D skeleton input. The doxygen page for the filter states that ? ?The algorithm is the N-dimensional version of that given for two dimensions in: Rafael C. Gonzales and Richard E. Woods. Digital Image Processing. Addison Wesley, 491-494, (1993).? But, from the source code of BinaryPruningImageFilter it appears that pruning is being performed considering 2-D neighbors only and hence does not support 3-D. Can someone please confirm this? Thanks. -Anchit -------------- next part -------------- An HTML attachment was scrubbed... URL: From sonia.pozzi89 at gmail.com Fri Jul 28 18:26:43 2017 From: sonia.pozzi89 at gmail.com (Sonia Pozzi) Date: Sat, 29 Jul 2017 00:26:43 +0200 Subject: [ITK-users] Siemens 4d data Message-ID: <98DF486D-EEE7-4F2C-9128-D7CE75F13D3A@gmail.com> Hello, I have a set of Siemens series. In each series there is the same slice for different times. I would like to be able to reconstruct in itk each single volume (a complete volume for every time step). It is a couple of week that I?m trying how to do that? I understood that I should use some tag, but I?m not sure about which and my code is not working. Could you be so kind to give me a suggestion here? My regards, Sonia From nickmarch31 at yahoo.com Sat Jul 29 10:30:40 2017 From: nickmarch31 at yahoo.com (Nick Cullen) Date: Sat, 29 Jul 2017 14:30:40 +0000 (UTC) Subject: [ITK-users] How to use smart pointer in WrapITK? References: <1276609631.2049671.1501338640801.ref@mail.yahoo.com> Message-ID: <1276609631.2049671.1501338640801@mail.yahoo.com> When I run itk.N4BiasFieldCorrectionImageFilter, I want to get the control point lattice, but when I run: correcter.GetLogBiasFieldControlPointLattice() It returns a SmartPointer:?,2 > > *' at 0x15e775300> Can I get the actual image from this in WrapITK? Is this happening because I haven't wrapped another class - specifically itk::BSplineScatteredDataPointSetToImageFilter, which is where the LogBiasFieldControlPointLattice comes from? Thanks!! -------------- next part -------------- An HTML attachment was scrubbed... URL: From nickmarch31 at yahoo.com Sat Jul 29 10:58:31 2017 From: nickmarch31 at yahoo.com (Nick Cullen) Date: Sat, 29 Jul 2017 14:58:31 +0000 (UTC) Subject: [ITK-users] How to use smart pointer in WrapITK? In-Reply-To: <1276609631.2049671.1501338640801@mail.yahoo.com> References: <1276609631.2049671.1501338640801.ref@mail.yahoo.com> <1276609631.2049671.1501338640801@mail.yahoo.com> Message-ID: <840875744.2072319.1501340311173@mail.yahoo.com> I guess my work around for now is to add this function to itkN4BiasFieldCorrectionImageFilter.h: ? const BiasFieldControlPointLatticeType* GetBiasFieldControlPointLatticeImage() const? ? {? ? return static_cast( this->m_LogBiasFieldControlPointLattice );? ? } On Saturday, July 29, 2017 10:35 AM, Nick Cullen via Insight-users wrote: When I run itk.N4BiasFieldCorrectionImageFilter, I want to get the control point lattice, but when I run: correcter.GetLogBiasFieldControlPointLattice() It returns a SmartPointer:?,2 > > *' at 0x15e775300> Can I get the actual image from this in WrapITK? Is this happening because I haven't wrapped another class - specifically itk::BSplineScatteredDataPointSetToImageFilter, which is where the LogBiasFieldControlPointLattice comes from? Thanks!!_____________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Kitware offers ITK Training Courses, for more information visit: http://www.kitware.com/products/protraining.php Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/insight-users -------------- next part -------------- An HTML attachment was scrubbed... URL: From jonasteuwen at gmail.com Sat Jul 29 12:01:34 2017 From: jonasteuwen at gmail.com (Jonas Teuwen) Date: Sat, 29 Jul 2017 18:01:34 +0200 Subject: [ITK-users] Which iterator to use for spherical or cylindrical neighborhood Message-ID: Hi all, I have point annotations in images which can be a little bit 'off center', a solution would be to find the maximum in a spherical or cylindrical region. For instance, if I have annotation, (a,b, c) I would want (x - a)^2 + (y - b)^2 <= some radius and |z - c| < height or (x - a)^2 + (y - b)^2 + (z - c)^2 <= some radius. I know I can use MinimumMaximumFilter for this, but how do I find this in the requested neighborhood? Best, Jonas Teuwen -------------- next part -------------- An HTML attachment was scrubbed... URL: From ljzijp at gmail.com Sat Jul 29 13:38:01 2017 From: ljzijp at gmail.com (Lambert Zijp) Date: Sat, 29 Jul 2017 19:38:01 +0200 Subject: [ITK-users] Siemens 4d data In-Reply-To: <98DF486D-EEE7-4F2C-9128-D7CE75F13D3A@gmail.com> References: <98DF486D-EEE7-4F2C-9128-D7CE75F13D3A@gmail.com> Message-ID: Hi Sonia, Apparently SeriesInstanceUID does not help; sounds familiar. Maybe FrameNumber, SeriesNumber or AcquisitionNumber? If not, sorting slices on slice coordinate and AcquisitionTime could be done as a last resort. If you post two slices with the same coordinate but belonging to different volumes, I will take look at it. Greetings, Lambert On Sat, Jul 29, 2017 at 12:26 AM, Sonia Pozzi wrote: > Hello, > > I have a set of Siemens series. In each series there is the same slice for > different times. > I would like to be able to reconstruct in itk each single volume (a > complete volume for every time step). > It is a couple of week that I?m trying how to do that? > I understood that I should use some tag, but I?m not sure about which and > my code is not working. > > Could you be so kind to give me a suggestion here? > > My regards, > > Sonia > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > -------------- next part -------------- An HTML attachment was scrubbed... URL: From lasso at queensu.ca Sat Jul 29 14:58:52 2017 From: lasso at queensu.ca (Andras Lasso) Date: Sat, 29 Jul 2017 18:58:52 +0000 Subject: [ITK-users] [ITK] Siemens 4d data In-Reply-To: References: <98DF486D-EEE7-4F2C-9128-D7CE75F13D3A@gmail.com> Message-ID: Finding out what DICOM fields to use for grouping frames is a complex topic. There is no universally accepted standard, the field(s) to use depend on scanner manufacturer, imaging modality, and imaging protocol. You can have a look at the 4D image importer logic in 3D Slicer (what DICOM fields are considered, what heuristics are used for automatically detecting special cases, etc): https://github.com/fedorov/MultiVolumeImporter/blob/master/MultiVolumeImporterPlugin.py You may also consider using 3D Slicer for loading DICOM data and saving as a 4D nrrd file that you can then easily load into ITK. If you have any questions related to this then post it on https://discourse.slicer.org. Andras From: Community [mailto:community-bounces at itk.org] On Behalf Of Lambert Zijp Sent: Saturday, July 29, 2017 1:38 PM To: Sonia Pozzi Cc: Insight-users Subject: Re: [ITK] [ITK-users] Siemens 4d data Hi Sonia, Apparently SeriesInstanceUID does not help; sounds familiar. Maybe FrameNumber, SeriesNumber or AcquisitionNumber? If not, sorting slices on slice coordinate and AcquisitionTime could be done as a last resort. If you post two slices with the same coordinate but belonging to different volumes, I will take look at it. Greetings, Lambert On Sat, Jul 29, 2017 at 12:26 AM, Sonia Pozzi > wrote: Hello, I have a set of Siemens series. In each series there is the same slice for different times. I would like to be able to reconstruct in itk each single volume (a complete volume for every time step). It is a couple of week that I?m trying how to do that? I understood that I should use some tag, but I?m not sure about which and my code is not working. Could you be so kind to give me a suggestion here? My regards, Sonia _____________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Kitware offers ITK Training Courses, for more information visit: http://www.kitware.com/products/protraining.php Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/insight-users -------------- next part -------------- An HTML attachment was scrubbed... URL: From pablo.hernandez.cerdan at outlook.com Sun Jul 30 06:58:39 2017 From: pablo.hernandez.cerdan at outlook.com (=?utf-8?B?UGFibG8gSGVybsOhbmRleg==?=) Date: Sun, 30 Jul 2017 10:58:39 +0000 Subject: [ITK-users] Recommended approach for cross-platform deploying ITK+Vtk+Qt5 Message-ID: Hi, I wonder what is the recommended approach for deploying a cross-platform application involving ITK+Vtk+Qt nowadays with all the available tools: docker containers, travis-ci, appveyor, circle-ci etc. Is it still recommended to create a SuperBuild with all your dependencies as ExternalProjects in CMake? How do you reduce the time it takes to build? The build time for all my dependencies (Vtk (with qt5), ITK, boost) plus my small app is surpassing the 60min limit in both, AppVeyor and Travis-CI. To alleviate this, do you use docker?. My main concern is Windows, I have seen that @thewtex and @jcfr have a repo with closs-platform buildings ( https://github.com/dockcross/dockcross ), there is a Windows64 there with Mingw that might help. I have no idea if I can generate windows binaries from AppVeyor using docker, or instead, I generate them using that docker image with Wine+MinGw in Travis-CI. Instead of CPack from CMake I have been thinking to use windowsqtdeploy, linuxqtdeploy from Qt... I have been looking to Slicer source code to see how they are doing it, and it seems super structured, but not 100% sure how they generate their nightly packages ( I guess it involves these docker images: https://github.com/thewtex/SlicerDocker, but also in Windows?) Maybe this is the not best forum to ask, but if you have any recommendations for deploying a small GUI app based on ITK, I will be extremely grateful to hear them. Thanks! Cheers, Pablo -------------- next part -------------- An HTML attachment was scrubbed... URL: From lasso at queensu.ca Sun Jul 30 08:02:14 2017 From: lasso at queensu.ca (Andras Lasso) Date: Sun, 30 Jul 2017 12:02:14 +0000 Subject: [ITK-users] [ITK] Recommended approach for cross-platform deploying ITK+Vtk+Qt5 In-Reply-To: References: Message-ID: Currently, Slicer does not use AppVeyor for continuous integration on Windows. Also, the full test suite of Slicer takes several hours to run, so CircleCI only checks for build errors. Andras From: Pablo Hern?ndez Sent: Sunday, July 30, 2017 6:58 To: Insight-users Subject: [ITK] [ITK-users] Recommended approach for cross-platform deploying ITK+Vtk+Qt5 Hi, I wonder what is the recommended approach for deploying a cross-platform application involving ITK+Vtk+Qt nowadays with all the available tools: docker containers, travis-ci, appveyor, circle-ci etc. Is it still recommended to create a SuperBuild with all your dependencies as ExternalProjects in CMake? How do you reduce the time it takes to build? The build time for all my dependencies (Vtk (with qt5), ITK, boost) plus my small app is surpassing the 60min limit in both, AppVeyor and Travis-CI. To alleviate this, do you use docker?. My main concern is Windows, I have seen that @thewtex and @jcfr have a repo with closs-platform buildings ( https://github.com/dockcross/dockcross ), there is a Windows64 there with Mingw that might help. I have no idea if I can generate windows binaries from AppVeyor using docker, or instead, I generate them using that docker image with Wine+MinGw in Travis-CI. Instead of CPack from CMake I have been thinking to use windowsqtdeploy, linuxqtdeploy from Qt... I have been looking to Slicer source code to see how they are doing it, and it seems super structured, but not 100% sure how they generate their nightly packages ( I guess it involves these docker images: https://github.com/thewtex/SlicerDocker, but also in Windows?) Maybe this is the not best forum to ask, but if you have any recommendations for deploying a small GUI app based on ITK, I will be extremely grateful to hear them. Thanks! Cheers, Pablo -------------- next part -------------- An HTML attachment was scrubbed... URL: From sonia.pozzi89 at gmail.com Sun Jul 30 13:09:56 2017 From: sonia.pozzi89 at gmail.com (Sonia Pozzi) Date: Sun, 30 Jul 2017 19:09:56 +0200 Subject: [ITK-users] [ITK] Siemens 4d data In-Reply-To: References: <98DF486D-EEE7-4F2C-9128-D7CE75F13D3A@gmail.com> Message-ID: <7ECC374E-7315-4D6C-B915-883FA677F57A@gmail.com> Dear Andras and Lambert, here is the code I?m using. Every one of my time series contains the same slice for different times. The problem is that it is importing the series one by one and it seems that it is not working in checking out which slice belong to the same time acquisition. At the end my 4D volume has coordinates [x,y,t,z]. I also tried to switch t- and z-coordinates at the end of my simulation but then I have some problem in the resulting volume (I?m not able to continuing working on it). As you know I can?t share MRI data here, but if you are willing I could send you a small part of them to try to figure out together how to read them... That would help me a lot. Regards and thank you for your time, Sonia nameGenerator -> SetDirectory( _dicomDirectory ); ReaderType::Pointer reader = ReaderType::New(); ShortImageType4D::Pointer image4D = ShortImageType4D::New(); ShortImageType::Pointer image3D = ShortImageType::New(); reader->SetImageIO(dicomIO); const std::string entry_id = "0018|1090 "; nameGenerator->AddSeriesRestriction(entry_id); typedef std::vector< std::string > SeriesIdContainer; const SeriesIdContainer & seriesUID = nameGenerator->GetSeriesUIDs(); SeriesIdContainer::const_iterator seriesItr = seriesUID.begin(); SeriesIdContainer::const_iterator seriesEnd = seriesUID.end(); typedef std::vector< std::string > FileNamesContainer; // figure out how many time points there are based on number of series unsigned int timepoints = 0; while (seriesItr != seriesEnd){ timepoints++; seriesItr++; } std::cout << "Number of time points : " << timepoints << std::endl; seriesItr = seriesUID.begin(); std::cout << "Reading first image : " << std::endl; std::cout << seriesItr->c_str() << std::endl; std::string seriesIdentifier; seriesIdentifier = seriesItr->c_str(); FileNamesContainer fileNames; fileNames = nameGenerator->GetFileNames(seriesIdentifier); FileNamesContainer::iterator fileiterator = fileNames.begin(); std::cout<<"sono qui"<SetFileNames(fileNames); try { reader->Update(); } catch (itk::ExceptionObject &ex) { std::cout << ex << std::endl; } const ShortImageType::SpacingType& spacing3D = reader->GetOutput()->GetSpacing(); std::cout << "Spacing 3D = " << spacing3D[0] << ", " << spacing3D[1] << ", " << spacing3D[2] << std::endl; const ShortImageType::PointType origin3D = reader->GetOutput()->GetOrigin(); std::cout << "Origin 3D = " << origin3D[0] << ", " << origin3D[1] << ", " << origin3D[2] << std::endl; const ShortImageType::SizeType size3D = reader->GetOutput()->GetBufferedRegion().GetSize(); ShortImageType4D::SpacingType spacing4D; ShortImageType4D::PointType origin4D; ShortImageType4D::SizeType size4D; for (int i = 0; i < 3; ++i){ spacing4D[i] = spacing3D[i]; origin4D[i] = origin3D[i]; size4D[i] = size3D[i]; } spacing4D[3] = 1; origin4D[3] = 0; size4D[3] = timepoints; ShortImageType4D::IndexType start4D; start4D.Fill(0); ShortImageType4D::RegionType region4D(start4D, size4D); std::cout << "Spacing 4D = " << spacing4D[0] << ", " << spacing4D[1] << ", " << spacing4D[2] << ", " << spacing4D[3] << std::endl; std::cout << "Size 4D = " << size4D[0] << ", " << size4D[1] << ", " << size4D[2] << ", " << size4D[3] << std::endl; image4D->SetRegions(region4D); image4D->SetSpacing(spacing4D); image4D->SetOrigin(origin4D); image4D->Allocate(); seriesItr = seriesUID.begin(); typedef itk::ImageRegionConstIterator< ShortImageType > Iterator3D; typedef itk::ImageRegionIterator< ShortImageType4D > Iterator4D; Iterator4D it4(image4D, image4D->GetBufferedRegion()); it4.GoToBegin(); unsigned short int idx = 0; while (seriesItr != seriesEnd){ seriesIdentifier = seriesItr->c_str(); std::cout << "Reading series " << std::endl; std::cout << seriesItr->c_str() << std::endl; fileNames = nameGenerator->GetFileNames(seriesIdentifier); for(unsigned int fni = 0; fniSetFileNames(fileNames); image3D = reader->GetOutput(); image3D->SetRegions(reader->GetOutput()->GetRequestedRegion()); image3D->CopyInformation(reader->GetOutput()); image3D->Allocate(); std::cout << "reading image volume " << idx << std::endl << std::endl; try { reader->Update(); } catch (itk::ExceptionObject &ex) { std::cout << ex << std::endl; } Iterator3D it3(image3D, image3D->GetBufferedRegion()); it3.GoToBegin(); while (!it3.IsAtEnd()) { it4.Set(it3.Get()); ++it3; ++it4; } // increment iterator seriesItr++; idx++; } > On 29 Jul 2017, at 20:58, Andras Lasso wrote: > > Finding out what DICOM fields to use for grouping frames is a complex topic. There is no universally accepted standard, the field(s) to use depend on scanner manufacturer, imaging modality, and imaging protocol. > > You can have a look at the 4D image importer logic in 3D Slicer (what DICOM fields are considered, what heuristics are used for automatically detecting special cases, etc): > https://github.com/fedorov/MultiVolumeImporter/blob/master/MultiVolumeImporterPlugin.py > > You may also consider using 3D Slicer for loading DICOM data and saving as a 4D nrrd file that you can then easily load into ITK. If you have any questions related to this then post it on https://discourse.slicer.org . > > Andras > ? <> > From: Community [mailto:community-bounces at itk.org] On Behalf Of Lambert Zijp > Sent: Saturday, July 29, 2017 1:38 PM > To: Sonia Pozzi > Cc: Insight-users > Subject: Re: [ITK] [ITK-users] Siemens 4d data > > Hi Sonia, > > Apparently SeriesInstanceUID does not help; sounds familiar. Maybe FrameNumber, SeriesNumber or AcquisitionNumber? If not, sorting slices on slice coordinate and AcquisitionTime could be done as a last resort. If you post two slices with the same coordinate but belonging to different volumes, I will take look at it. > > Greetings, Lambert > > On Sat, Jul 29, 2017 at 12:26 AM, Sonia Pozzi > wrote: > Hello, > > I have a set of Siemens series. In each series there is the same slice for different times. > I would like to be able to reconstruct in itk each single volume (a complete volume for every time step). > It is a couple of week that I?m trying how to do that? > I understood that I should use some tag, but I?m not sure about which and my code is not working. > > Could you be so kind to give me a suggestion here? > > My regards, > > Sonia > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users -------------- next part -------------- An HTML attachment was scrubbed... URL: From lasso at queensu.ca Sun Jul 30 15:50:32 2017 From: lasso at queensu.ca (Andras Lasso) Date: Sun, 30 Jul 2017 19:50:32 +0000 Subject: [ITK-users] [ITK] Siemens 4d data In-Reply-To: <7ECC374E-7315-4D6C-B915-883FA677F57A@gmail.com> References: <98DF486D-EEE7-4F2C-9128-D7CE75F13D3A@gmail.com> , <7ECC374E-7315-4D6C-B915-883FA677F57A@gmail.com> Message-ID: Does Slicer load it correctly as a 4D volume? If yes, you can use that or copy it's behavior on your own software. If Slicer does not load it correctly or you are not sure how to do it, then ask help on the Slicer forum (discourse.slicer.org). Andras From: Sonia Pozzi Sent: Sunday, July 30, 2017 13:10 To: Andras Lasso Cc: Lambert Zijp; Insight-users Subject: Re: [ITK-users] [ITK] Siemens 4d data Dear Andras and Lambert, here is the code I?m using. Every one of my time series contains the same slice for different times. The problem is that it is importing the series one by one and it seems that it is not working in checking out which slice belong to the same time acquisition. At the end my 4D volume has coordinates [x,y,t,z]. I also tried to switch t- and z-coordinates at the end of my simulation but then I have some problem in the resulting volume (I?m not able to continuing working on it). As you know I can?t share MRI data here, but if you are willing I could send you a small part of them to try to figure out together how to read them... That would help me a lot. Regards and thank you for your time, Sonia nameGenerator -> SetDirectory( _dicomDirectory ); ReaderType::Pointer reader = ReaderType::New(); ShortImageType4D::Pointer image4D = ShortImageType4D::New(); ShortImageType::Pointer image3D = ShortImageType::New(); reader->SetImageIO(dicomIO); const std::string entry_id = "0018|1090 "; nameGenerator->AddSeriesRestriction(entry_id); typedef std::vector< std::string > SeriesIdContainer; const SeriesIdContainer & seriesUID = nameGenerator->GetSeriesUIDs(); SeriesIdContainer::const_iterator seriesItr = seriesUID.begin(); SeriesIdContainer::const_iterator seriesEnd = seriesUID.end(); typedef std::vector< std::string > FileNamesContainer; // figure out how many time points there are based on number of series unsigned int timepoints = 0; while (seriesItr != seriesEnd){ timepoints++; seriesItr++; } std::cout << "Number of time points : " << timepoints << std::endl; seriesItr = seriesUID.begin(); std::cout << "Reading first image : " << std::endl; std::cout << seriesItr->c_str() << std::endl; std::string seriesIdentifier; seriesIdentifier = seriesItr->c_str(); FileNamesContainer fileNames; fileNames = nameGenerator->GetFileNames(seriesIdentifier); FileNamesContainer::iterator fileiterator = fileNames.begin(); std::cout<<"sono qui"<SetFileNames(fileNames); try { reader->Update(); } catch (itk::ExceptionObject &ex) { std::cout << ex << std::endl; } const ShortImageType::SpacingType& spacing3D = reader->GetOutput()->GetSpacing(); std::cout << "Spacing 3D = " << spacing3D[0] << ", " << spacing3D[1] << ", " << spacing3D[2] << std::endl; const ShortImageType::PointType origin3D = reader->GetOutput()->GetOrigin(); std::cout << "Origin 3D = " << origin3D[0] << ", " << origin3D[1] << ", " << origin3D[2] << std::endl; const ShortImageType::SizeType size3D = reader->GetOutput()->GetBufferedRegion().GetSize(); ShortImageType4D::SpacingType spacing4D; ShortImageType4D::PointType origin4D; ShortImageType4D::SizeType size4D; for (int i = 0; i < 3; ++i){ spacing4D[i] = spacing3D[i]; origin4D[i] = origin3D[i]; size4D[i] = size3D[i]; } spacing4D[3] = 1; origin4D[3] = 0; size4D[3] = timepoints; ShortImageType4D::IndexType start4D; start4D.Fill(0); ShortImageType4D::RegionType region4D(start4D, size4D); std::cout << "Spacing 4D = " << spacing4D[0] << ", " << spacing4D[1] << ", " << spacing4D[2] << ", " << spacing4D[3] << std::endl; std::cout << "Size 4D = " << size4D[0] << ", " << size4D[1] << ", " << size4D[2] << ", " << size4D[3] << std::endl; image4D->SetRegions(region4D); image4D->SetSpacing(spacing4D); image4D->SetOrigin(origin4D); image4D->Allocate(); seriesItr = seriesUID.begin(); typedef itk::ImageRegionConstIterator< ShortImageType > Iterator3D; typedef itk::ImageRegionIterator< ShortImageType4D > Iterator4D; Iterator4D it4(image4D, image4D->GetBufferedRegion()); it4.GoToBegin(); unsigned short int idx = 0; while (seriesItr != seriesEnd){ seriesIdentifier = seriesItr->c_str(); std::cout << "Reading series " << std::endl; std::cout << seriesItr->c_str() << std::endl; fileNames = nameGenerator->GetFileNames(seriesIdentifier); for(unsigned int fni = 0; fniSetFileNames(fileNames); image3D = reader->GetOutput(); image3D->SetRegions(reader->GetOutput()->GetRequestedRegion()); image3D->CopyInformation(reader->GetOutput()); image3D->Allocate(); std::cout << "reading image volume " << idx << std::endl << std::endl; try { reader->Update(); } catch (itk::ExceptionObject &ex) { std::cout << ex << std::endl; } Iterator3D it3(image3D, image3D->GetBufferedRegion()); it3.GoToBegin(); while (!it3.IsAtEnd()) { it4.Set(it3.Get()); ++it3; ++it4; } // increment iterator seriesItr++; idx++; } On 29 Jul 2017, at 20:58, Andras Lasso > wrote: Finding out what DICOM fields to use for grouping frames is a complex topic. There is no universally accepted standard, the field(s) to use depend on scanner manufacturer, imaging modality, and imaging protocol. You can have a look at the 4D image importer logic in 3D Slicer (what DICOM fields are considered, what heuristics are used for automatically detecting special cases, etc): https://github.com/fedorov/MultiVolumeImporter/blob/master/MultiVolumeImporterPlugin.py You may also consider using 3D Slicer for loading DICOM data and saving as a 4D nrrd file that you can then easily load into ITK. If you have any questions related to this then post it on https://discourse.slicer.org. Andras From: Community [mailto:community-bounces at itk.org] On Behalf Of Lambert Zijp Sent: Saturday, July 29, 2017 1:38 PM To: Sonia Pozzi > Cc: Insight-users > Subject: Re: [ITK] [ITK-users] Siemens 4d data Hi Sonia, Apparently SeriesInstanceUID does not help; sounds familiar. Maybe FrameNumber, SeriesNumber or AcquisitionNumber? If not, sorting slices on slice coordinate and AcquisitionTime could be done as a last resort. If you post two slices with the same coordinate but belonging to different volumes, I will take look at it. Greetings, Lambert On Sat, Jul 29, 2017 at 12:26 AM, Sonia Pozzi > wrote: Hello, I have a set of Siemens series. In each series there is the same slice for different times. I would like to be able to reconstruct in itk each single volume (a complete volume for every time step). It is a couple of week that I?m trying how to do that? I understood that I should use some tag, but I?m not sure about which and my code is not working. Could you be so kind to give me a suggestion here? My regards, Sonia _____________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Kitware offers ITK Training Courses, for more information visit: http://www.kitware.com/products/protraining.php Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/insight-users _____________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Kitware offers ITK Training Courses, for more information visit: http://www.kitware.com/products/protraining.php Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/insight-users -------------- next part -------------- An HTML attachment was scrubbed... URL: From matt.mccormick at kitware.com Mon Jul 31 10:36:25 2017 From: matt.mccormick at kitware.com (Matt McCormick) Date: Mon, 31 Jul 2017 10:36:25 -0400 Subject: [ITK-users] [ITK] Recommended approach for cross-platform deploying ITK+Vtk+Qt5 In-Reply-To: References: Message-ID: Hi Pablo, Good questions -- C++ ITK/VTK/Qt package development on GitHub CI services is non-trivial. A common issue is timeout's, and a strategy is to use pre-built binaries of ITK/VTK/Qt. Regarding Linux package development, CircleCI is recommended with a custom Docker image that has ITK / VTK / Qt pre-built. Since glibc is forward compatible but not backwards compatible, a base image that uses the oldest version of glibc will generate the most compatible image. For many projects, we use CentOS 5 with a newer GCC, but I think only Qt4 can be built with this and not Qt5. The build can be generated on one Linux Docker image for glibc purposes and tested on another that provides the graphical context. See the CommonTK AppLauncher configuration as an example [1]. This uses the thewtex/opengl Docker image [2] to provide a portable, reproducible, CPU-based graphical testing environment [2]. The CTK AppLauncher is also of interest as an alternative to windowsqtdeploy, etc. It is cross-platform, and provides the setup to use shared libraries and avoid Qt LGPL licensing issues. For Windows builds, the dockcross/windows-x64 (uses MXE/MinGW-x64) image could work nicely. A derived image that builds the MXE packages for ITK / VTK / Qt could be created [3]. Since dockcross also comes with WINE for testing, it may also be possible to use thewtex/opengl for testing on CircleCI (although I have never tried this). For macOS builds, TravisCI has Homebrew installed on their images, and ITK / VTK / Qt can be installed via Homebrew [4]. HTH, Matt [1] https://github.com/commontk/AppLauncher/blob/5b592f1baaa7dd41d68e1cd56a2a82e298196ebe/circle.yml [2] https://github.com/thewtex/docker-opengl [3] http://mxe.cc/ [4] https://blog.kitware.com/kitware-packages-on-os-x-with-homebrew/ On Sun, Jul 30, 2017 at 8:02 AM, Andras Lasso wrote: > Currently, Slicer does not use AppVeyor for continuous integration on > Windows. Also, the full test suite of Slicer takes several hours to run, so > CircleCI only checks for build errors. > > > > Andras > > > > From: Pablo Hern?ndez > Sent: Sunday, July 30, 2017 6:58 > To: Insight-users > Subject: [ITK] [ITK-users] Recommended approach for cross-platform deploying > ITK+Vtk+Qt5 > > > > Hi, > I wonder what is the recommended approach for deploying a cross-platform > application involving ITK+Vtk+Qt nowadays with all the available tools: > docker containers, travis-ci, appveyor, circle-ci etc. > > Is it still recommended to create a SuperBuild with all your dependencies as > ExternalProjects in CMake? How do you reduce the time it takes to build? > The build time for all my dependencies (Vtk (with qt5), ITK, boost) plus my > small app is surpassing the 60min limit in both, AppVeyor and Travis-CI. To > alleviate this, do you use docker?. > > My main concern is Windows, I have seen that @thewtex and @jcfr have a repo > with closs-platform buildings ( https://github.com/dockcross/dockcross ), > there is a Windows64 there with Mingw that might help. I have no idea if I > can generate windows binaries from AppVeyor using docker, or instead, I > generate them using that docker image with Wine+MinGw in Travis-CI. > > Instead of CPack from CMake I have been thinking to use windowsqtdeploy, > linuxqtdeploy from Qt... > > I have been looking to Slicer source code to see how they are doing it, and > it seems super structured, but not 100% sure how they generate their nightly > packages ( I guess it involves these docker images: > https://github.com/thewtex/SlicerDocker, but also in Windows?) > > Maybe this is the not best forum to ask, but if you have any recommendations > for deploying a small GUI app based on ITK, I will be extremely grateful to > hear them. Thanks! > > Cheers, > Pablo > > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > From matt.mccormick at kitware.com Mon Jul 31 10:48:32 2017 From: matt.mccormick at kitware.com (Matt McCormick) Date: Mon, 31 Jul 2017 10:48:32 -0400 Subject: [ITK-users] Which iterator to use for spherical or cylindrical neighborhood In-Reply-To: References: Message-ID: Hi Jonas, Perhaps the itk::RegionOfInterestImageFilter is what you want? https://itk.org/ITKExamples/src/Filtering/ImageGrid/ExtractRegionOfInterestInOneImage/Documentation.html Hope this helps, Matt On Sat, Jul 29, 2017 at 12:01 PM, Jonas Teuwen wrote: > Hi all, > > I have point annotations in images which can be a little bit 'off center', a > solution would be to find the maximum in a spherical or cylindrical region. > For instance, if I have annotation, (a,b, c) I would want (x - a)^2 + (y - > b)^2 <= some radius and |z - c| < height or (x - a)^2 + (y - b)^2 + (z - > c)^2 <= some radius. > > I know I can use MinimumMaximumFilter for this, but how do I find this in > the requested neighborhood? > > Best, > Jonas Teuwen > > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > From matt.mccormick at kitware.com Mon Jul 31 10:57:58 2017 From: matt.mccormick at kitware.com (Matt McCormick) Date: Mon, 31 Jul 2017 10:57:58 -0400 Subject: [ITK-users] How to use smart pointer in WrapITK? In-Reply-To: <840875744.2072319.1501340311173@mail.yahoo.com> References: <1276609631.2049671.1501338640801.ref@mail.yahoo.com> <1276609631.2049671.1501338640801@mail.yahoo.com> <840875744.2072319.1501340311173@mail.yahoo.com> Message-ID: Hi Nick, Thanks for bringing this up -- you found a bug. The method should be returning a raw pointer instead of a SmartPointer. Please review this patch, which will address the issue: http://review.source.kitware.com/#/c/22546/ Thanks, Matt On Sat, Jul 29, 2017 at 10:58 AM, Nick Cullen via Insight-users wrote: > I guess my work around for now is to add this function to > itkN4BiasFieldCorrectionImageFilter.h: > > const BiasFieldControlPointLatticeType* > GetBiasFieldControlPointLatticeImage() const > { > return static_cast( > this->m_LogBiasFieldControlPointLattice ); > } > > > > On Saturday, July 29, 2017 10:35 AM, Nick Cullen via Insight-users > wrote: > > > When I run itk.N4BiasFieldCorrectionImageFilter, I want to get the control > point lattice, but when I run: > > correcter.GetLogBiasFieldControlPointLattice() > > It returns a SmartPointer: itk::Image< itk::Vector< float,1 >,2 > > *' at 0x15e775300> > > Can I get the actual image from this in WrapITK? Is this happening because I > haven't wrapped another class - specifically > itk::BSplineScatteredDataPointSetToImageFilter, which is where the > LogBiasFieldControlPointLattice comes from? > > Thanks!! > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > > > > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > From matt.mccormick at kitware.com Mon Jul 31 11:33:00 2017 From: matt.mccormick at kitware.com (Matt McCormick) Date: Mon, 31 Jul 2017 11:33:00 -0400 Subject: [ITK-users] Problems Using GPU Filters In-Reply-To: <1501002308962-7590057.post@n2.nabble.com> References: <1498789176254-7590036.post@n2.nabble.com> <1501002308962-7590057.post@n2.nabble.com> Message-ID: Hi Andaharoo, If you use itk::GPUImage for the filters, it can be used in the pipelines, and it will present a version of the image's pixel buffer in the CPU's memory when needed. See, for example, https://github.com/InsightSoftwareConsortium/ITK/blob/53927cdef2ed0f783d20ac5b79c6aa435a6da08b/Modules/Filtering/GPUAnisotropicSmoothing/test/itkGPUGradientAnisotropicDiffusionImageFilterTest.cxx Hope this helps, Matt On Tue, Jul 25, 2017 at 1:05 PM, Andaharoo wrote: > How exactly do I load/setup a GPUImage. There seem to be tons of examples on > how to make GPU filters but none on how to use them? Or convert between a > regular itk image and a GPUImage. > > > > -- > View this message in context: http://itk-insight-users.2283740.n2.nabble.com/Problems-Using-GPU-Filters-tp7590036p7590057.html > Sent from the ITK Insight Users mailing list archive at Nabble.com. > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users From dzenanz at gmail.com Mon Jul 31 15:23:33 2017 From: dzenanz at gmail.com (=?UTF-8?B?RMW+ZW5hbiBadWtpxIc=?=) Date: Mon, 31 Jul 2017 15:23:33 -0400 Subject: [ITK-users] 3-D support for BinaryPruningImageFilter In-Reply-To: <484A4E48-73AF-4624-A9F1-09266DDA5911@mathworks.com> References: <484A4E48-73AF-4624-A9F1-09266DDA5911@mathworks.com> Message-ID: Hi Anchit, I took a look at the source code, and it does seem to be 2D-only. Regards, D?enan Zuki?, PhD, Senior R&D Engineer, Kitware (Carrboro, N.C.) On Fri, Jul 28, 2017 at 1:58 PM, Anchit Dhar wrote: > Hello, > > > > I have written a module to prune branches of a 3-D Skeleton using ITK?s BinaryPruningImageFilter. > The filter is returning unexpected pruned results for a 3-D skeleton input. > > > > The doxygen page > > for the filter states that ? > > *?The algorithm is the N-dimensional version of that given for two > dimensions in: Rafael C. Gonzales and Richard E. Woods. Digital Image > Processing. Addison > Wesley, 491-494, (1993).?* > > But, from the source code of BinaryPruningImageFilter it appears that > pruning is being performed considering 2-D neighbors only and hence does > not support 3-D. Can someone please confirm this? > > Thanks. > > -Anchit > > > > > > > > > > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jonasteuwen at gmail.com Mon Jul 31 15:55:40 2017 From: jonasteuwen at gmail.com (Jonas Teuwen) Date: Mon, 31 Jul 2017 21:55:40 +0200 Subject: [ITK-users] SliceBySliceImageFilter Message-ID: Hi all, I have 3D images on which I apply a collection of filters slice-by-slice. I discovered the 'SliceBySliceImageFilter'. The 2D filter contains things such as, after I read the 2D images: typedef itk::FlatStructuringElement< Dimension > StructuringElementType; StructuringElementType::RadiusType radius; radius.Fill( radiusValue ); StructuringElementType structuringElement = StructuringElementType::Annulus(radius, outerRadius, false, false); typedef itk::GrayscaleDilateImageFilter< FloatImageType, ImageType, StructuringElementType > GrayscaleDilateImageFilterType; GrayscaleDilateImageFilterType::Pointer dilateFilter = GrayscaleDilateImageFilterType::New(); dilateFilter->SetInput( reader ->GetOutput() ); dilateFilter->SetKernel( structuringElement ); //dilateOutput = dilateFilter->GetOutput(); typedef itk::MinimumImageFilter MinimumImageFilterType; MinimumImageFilterType::Pointer minimumImageFilter = MinimumImageFilterType::New (); minimumImageFilter->SetInput(0, reader->GetOutput()); minimumImageFilter->SetInput(1, dilateFilter->GetOutput()); minimumImageFilter->Update(); then I have the output in minimumImageFilter->GetOutput(); However, when I apply SliceBySlice Image filter, my reader is the one of a 3D image, but the minimum filter also uses the reader->GetOutput() which has to be in 2D. How do approach this problem? Best, Jonas -------------- next part -------------- An HTML attachment was scrubbed... URL: From matt.mccormick at kitware.com Mon Jul 31 17:07:44 2017 From: matt.mccormick at kitware.com (Matt McCormick) Date: Mon, 31 Jul 2017 17:07:44 -0400 Subject: [ITK-users] Migration to GitHub Message-ID: Hi folks, We are considering migration of ITK's software process to GitHub, and we would like your feedback. As an open-source, community-driven project, mechanisms to communicate and interact with the community are a high priority for ITK. Contributing should be as easy as possible. Increasingly over the past many years, GitHub has become the de facto place to interact for open source development. It is now a hub for: Microsoft Facebook Google The Scientific Python Community The 3D Slicer Community Our InsightSoftwareConsortium GitHub organization [1] already has 67 people in it and 74 repositories. There are hundreds of projects that depend on ITK on GitHub. Many ITK developers are familiar with the development process on GitHub (i.e the pull request process) and already have an account on this platform. There are also advantages to linking issues and commits with other projects and repositories. Since ITK thrives on the open-source development idea, everyone who wants to help the project should be able to contribute, and therefore it should be as easy as possible to start participating in the community. Recently, GitHub's code review capabilities have greatly improved, which make it more feasible to coordinate contributions for a large project like ITK. And, there are many existing GitHub-integrated services that we can leverage. Thanks to resources from the National Library of Medicine and technological advances, it is now feasible to migrate the project's software process to GitHub. There are many infrastructural aspects to the migration, and it would take multiple months to complete. Please let us know your thoughts before we embark on the journey. [1] https://github.com/InsightSoftwareConsortium From millerjv at gmail.com Mon Jul 31 17:56:57 2017 From: millerjv at gmail.com (Jim Miller) Date: Mon, 31 Jul 2017 17:56:57 -0400 Subject: [ITK-users] Migration to GitHub In-Reply-To: References: Message-ID: +1 Jim > On Jul 31, 2017, at 5:07 PM, Matt McCormick wrote: > > Hi folks, > > We are considering migration of ITK's software process to GitHub, and > we would like your feedback. > > As an open-source, community-driven project, mechanisms to communicate > and interact with the community are a high priority for ITK. > Contributing should be as easy as possible. Increasingly over the past > many years, GitHub has become the de facto place to interact for open > source development. It is now a hub for: > > Microsoft > Facebook > Google > The Scientific Python Community > The 3D Slicer Community > > Our InsightSoftwareConsortium GitHub organization [1] already has 67 > people in it and 74 repositories. There are hundreds of projects that > depend on ITK on GitHub. Many ITK developers are familiar with the > development process on GitHub (i.e the pull request process) and > already have an account on this platform. There are also advantages to > linking issues and commits with other projects and repositories. Since > ITK thrives on the open-source development idea, everyone who wants to > help the project should be able to contribute, and therefore it should > be as easy as possible to start participating in the community. > > Recently, GitHub's code review capabilities have greatly improved, > which make it more feasible to coordinate contributions for a large > project like ITK. And, there are many existing GitHub-integrated > services that we can leverage. > > Thanks to resources from the National Library of Medicine and > technological advances, it is now feasible to migrate the project's > software process to GitHub. There are many infrastructural aspects to > the migration, and it would take multiple months to complete. Please > let us know your thoughts before we embark on the journey. > > > [1] https://github.com/InsightSoftwareConsortium > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users From hans-johnson at uiowa.edu Mon Jul 31 18:03:46 2017 From: hans-johnson at uiowa.edu (Johnson, Hans J) Date: Mon, 31 Jul 2017 22:03:46 +0000 Subject: [ITK-users] Migration to GitHub In-Reply-To: References: Message-ID: 1000 x +1 I enthusiastically support this proposal. Hans On 7/31/17, 4:57 PM, "Insight-users on behalf of Jim Miller" wrote: +1 Jim > On Jul 31, 2017, at 5:07 PM, Matt McCormick wrote: > > Hi folks, > > We are considering migration of ITK's software process to GitHub, and > we would like your feedback. > > As an open-source, community-driven project, mechanisms to communicate > and interact with the community are a high priority for ITK. > Contributing should be as easy as possible. Increasingly over the past > many years, GitHub has become the de facto place to interact for open > source development. It is now a hub for: > > Microsoft > Facebook > Google > The Scientific Python Community > The 3D Slicer Community > > Our InsightSoftwareConsortium GitHub organization [1] already has 67 > people in it and 74 repositories. There are hundreds of projects that > depend on ITK on GitHub. Many ITK developers are familiar with the > development process on GitHub (i.e the pull request process) and > already have an account on this platform. There are also advantages to > linking issues and commits with other projects and repositories. Since > ITK thrives on the open-source development idea, everyone who wants to > help the project should be able to contribute, and therefore it should > be as easy as possible to start participating in the community. > > Recently, GitHub's code review capabilities have greatly improved, > which make it more feasible to coordinate contributions for a large > project like ITK. And, there are many existing GitHub-integrated > services that we can leverage. > > Thanks to resources from the National Library of Medicine and > technological advances, it is now feasible to migrate the project's > software process to GitHub. There are many infrastructural aspects to > the migration, and it would take multiple months to complete. Please > let us know your thoughts before we embark on the journey. > > > [1] https://github.com/InsightSoftwareConsortium > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users _____________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Kitware offers ITK Training Courses, for more information visit: http://www.kitware.com/products/protraining.php Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/insight-users From bill.lorensen at gmail.com Mon Jul 31 18:42:38 2017 From: bill.lorensen at gmail.com (Bill Lorensen) Date: Mon, 31 Jul 2017 18:42:38 -0400 Subject: [ITK-users] Migration to GitHub In-Reply-To: References: Message-ID: Vtk moved to gitlab. Have you checked with the Kitware folks to see why they didn't use gitlab? For me, either github or gitlab is great. On Jul 31, 2017 6:03 PM, "Johnson, Hans J" wrote: > 1000 x +1 > > I enthusiastically support this proposal. > > Hans > > > On 7/31/17, 4:57 PM, "Insight-users on behalf of Jim Miller" < > insight-users-bounces at itk.org on behalf of millerjv at gmail.com> wrote: > > +1 > > Jim > > > On Jul 31, 2017, at 5:07 PM, Matt McCormick < > matt.mccormick at kitware.com> wrote: > > > > Hi folks, > > > > We are considering migration of ITK's software process to GitHub, and > > we would like your feedback. > > > > As an open-source, community-driven project, mechanisms to > communicate > > and interact with the community are a high priority for ITK. > > Contributing should be as easy as possible. Increasingly over the > past > > many years, GitHub has become the de facto place to interact for open > > source development. It is now a hub for: > > > > Microsoft > > Facebook > > Google > > The Scientific Python Community > > The 3D Slicer Community > > > > Our InsightSoftwareConsortium GitHub organization [1] already has 67 > > people in it and 74 repositories. There are hundreds of projects that > > depend on ITK on GitHub. Many ITK developers are familiar with the > > development process on GitHub (i.e the pull request process) and > > already have an account on this platform. There are also advantages > to > > linking issues and commits with other projects and repositories. > Since > > ITK thrives on the open-source development idea, everyone who wants > to > > help the project should be able to contribute, and therefore it > should > > be as easy as possible to start participating in the community. > > > > Recently, GitHub's code review capabilities have greatly improved, > > which make it more feasible to coordinate contributions for a large > > project like ITK. And, there are many existing GitHub-integrated > > services that we can leverage. > > > > Thanks to resources from the National Library of Medicine and > > technological advances, it is now feasible to migrate the project's > > software process to GitHub. There are many infrastructural aspects to > > the migration, and it would take multiple months to complete. Please > > let us know your thoughts before we embark on the journey. > > > > > > [1] https://github.com/InsightSoftwareConsortium > > _____________________________________ > > Powered by www.kitware.com > > > > Visit other Kitware open-source projects at > > http://www.kitware.com/opensource/opensource.html > > > > Kitware offers ITK Training Courses, for more information visit: > > http://www.kitware.com/products/protraining.php > > > > Please keep messages on-topic and check the ITK FAQ at: > > http://www.itk.org/Wiki/ITK_FAQ > > > > Follow this link to subscribe/unsubscribe: > > http://public.kitware.com/mailman/listinfo/insight-users > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > > > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users > -------------- next part -------------- An HTML attachment was scrubbed... URL: From matt.mccormick at kitware.com Mon Jul 31 19:00:13 2017 From: matt.mccormick at kitware.com (Matt McCormick) Date: Mon, 31 Jul 2017 19:00:13 -0400 Subject: [ITK-users] Migration to GitHub In-Reply-To: References: Message-ID: I have followed VTK's migration to GitLab, and Kitware has done an excellent job with it. That said, I still think GitHub is the better choice for ITK. Also, the technical and social situation has changed in the time since VTK moved to GitLab. I think the key factor is "community", and GitHub has the open source community. On Mon, Jul 31, 2017 at 6:42 PM, Bill Lorensen wrote: > Vtk moved to gitlab. Have you checked with the Kitware folks to see why > they didn't use gitlab? For me, either github or gitlab is great. > > On Jul 31, 2017 6:03 PM, "Johnson, Hans J" wrote: >> >> 1000 x +1 >> >> I enthusiastically support this proposal. >> >> Hans >> >> >> On 7/31/17, 4:57 PM, "Insight-users on behalf of Jim Miller" >> wrote: >> >> +1 >> >> Jim >> >> > On Jul 31, 2017, at 5:07 PM, Matt McCormick >> wrote: >> > >> > Hi folks, >> > >> > We are considering migration of ITK's software process to GitHub, >> and >> > we would like your feedback. >> > >> > As an open-source, community-driven project, mechanisms to >> communicate >> > and interact with the community are a high priority for ITK. >> > Contributing should be as easy as possible. Increasingly over the >> past >> > many years, GitHub has become the de facto place to interact for >> open >> > source development. It is now a hub for: >> > >> > Microsoft >> > Facebook >> > Google >> > The Scientific Python Community >> > The 3D Slicer Community >> > >> > Our InsightSoftwareConsortium GitHub organization [1] already has 67 >> > people in it and 74 repositories. There are hundreds of projects >> that >> > depend on ITK on GitHub. Many ITK developers are familiar with the >> > development process on GitHub (i.e the pull request process) and >> > already have an account on this platform. There are also advantages >> to >> > linking issues and commits with other projects and repositories. >> Since >> > ITK thrives on the open-source development idea, everyone who wants >> to >> > help the project should be able to contribute, and therefore it >> should >> > be as easy as possible to start participating in the community. >> > >> > Recently, GitHub's code review capabilities have greatly improved, >> > which make it more feasible to coordinate contributions for a large >> > project like ITK. And, there are many existing GitHub-integrated >> > services that we can leverage. >> > >> > Thanks to resources from the National Library of Medicine and >> > technological advances, it is now feasible to migrate the project's >> > software process to GitHub. There are many infrastructural aspects >> to >> > the migration, and it would take multiple months to complete. Please >> > let us know your thoughts before we embark on the journey. >> > >> > >> > [1] https://github.com/InsightSoftwareConsortium >> > _____________________________________ >> > Powered by www.kitware.com >> > >> > Visit other Kitware open-source projects at >> > http://www.kitware.com/opensource/opensource.html >> > >> > Kitware offers ITK Training Courses, for more information visit: >> > http://www.kitware.com/products/protraining.php >> > >> > Please keep messages on-topic and check the ITK FAQ at: >> > http://www.itk.org/Wiki/ITK_FAQ >> > >> > Follow this link to subscribe/unsubscribe: >> > http://public.kitware.com/mailman/listinfo/insight-users >> _____________________________________ >> Powered by www.kitware.com >> >> Visit other Kitware open-source projects at >> http://www.kitware.com/opensource/opensource.html >> >> Kitware offers ITK Training Courses, for more information visit: >> http://www.kitware.com/products/protraining.php >> >> Please keep messages on-topic and check the ITK FAQ at: >> http://www.itk.org/Wiki/ITK_FAQ >> >> Follow this link to subscribe/unsubscribe: >> http://public.kitware.com/mailman/listinfo/insight-users >> >> >> _____________________________________ >> Powered by www.kitware.com >> >> Visit other Kitware open-source projects at >> http://www.kitware.com/opensource/opensource.html >> >> Kitware offers ITK Training Courses, for more information visit: >> http://www.kitware.com/products/protraining.php >> >> Please keep messages on-topic and check the ITK FAQ at: >> http://www.itk.org/Wiki/ITK_FAQ >> >> Follow this link to subscribe/unsubscribe: >> http://public.kitware.com/mailman/listinfo/insight-users From bill.lorensen at gmail.com Mon Jul 31 19:22:56 2017 From: bill.lorensen at gmail.com (Bill Lorensen) Date: Mon, 31 Jul 2017 19:22:56 -0400 Subject: [ITK-users] Migration to GitHub In-Reply-To: References: Message-ID: I agree. I argued against gitlab but lost... +1 for this move. On Mon, Jul 31, 2017 at 7:00 PM, Matt McCormick wrote: > I have followed VTK's migration to GitLab, and Kitware has done an > excellent job with it. That said, I still think GitHub is the better > choice for ITK. Also, the technical and social situation has changed > in the time since VTK moved to GitLab. > > I think the key factor is "community", and GitHub has the open source community. > > On Mon, Jul 31, 2017 at 6:42 PM, Bill Lorensen wrote: >> Vtk moved to gitlab. Have you checked with the Kitware folks to see why >> they didn't use gitlab? For me, either github or gitlab is great. >> >> On Jul 31, 2017 6:03 PM, "Johnson, Hans J" wrote: >>> >>> 1000 x +1 >>> >>> I enthusiastically support this proposal. >>> >>> Hans >>> >>> >>> On 7/31/17, 4:57 PM, "Insight-users on behalf of Jim Miller" >>> wrote: >>> >>> +1 >>> >>> Jim >>> >>> > On Jul 31, 2017, at 5:07 PM, Matt McCormick >>> wrote: >>> > >>> > Hi folks, >>> > >>> > We are considering migration of ITK's software process to GitHub, >>> and >>> > we would like your feedback. >>> > >>> > As an open-source, community-driven project, mechanisms to >>> communicate >>> > and interact with the community are a high priority for ITK. >>> > Contributing should be as easy as possible. Increasingly over the >>> past >>> > many years, GitHub has become the de facto place to interact for >>> open >>> > source development. It is now a hub for: >>> > >>> > Microsoft >>> > Facebook >>> > Google >>> > The Scientific Python Community >>> > The 3D Slicer Community >>> > >>> > Our InsightSoftwareConsortium GitHub organization [1] already has 67 >>> > people in it and 74 repositories. There are hundreds of projects >>> that >>> > depend on ITK on GitHub. Many ITK developers are familiar with the >>> > development process on GitHub (i.e the pull request process) and >>> > already have an account on this platform. There are also advantages >>> to >>> > linking issues and commits with other projects and repositories. >>> Since >>> > ITK thrives on the open-source development idea, everyone who wants >>> to >>> > help the project should be able to contribute, and therefore it >>> should >>> > be as easy as possible to start participating in the community. >>> > >>> > Recently, GitHub's code review capabilities have greatly improved, >>> > which make it more feasible to coordinate contributions for a large >>> > project like ITK. And, there are many existing GitHub-integrated >>> > services that we can leverage. >>> > >>> > Thanks to resources from the National Library of Medicine and >>> > technological advances, it is now feasible to migrate the project's >>> > software process to GitHub. There are many infrastructural aspects >>> to >>> > the migration, and it would take multiple months to complete. Please >>> > let us know your thoughts before we embark on the journey. >>> > >>> > >>> > [1] https://github.com/InsightSoftwareConsortium >>> > _____________________________________ >>> > Powered by www.kitware.com >>> > >>> > Visit other Kitware open-source projects at >>> > http://www.kitware.com/opensource/opensource.html >>> > >>> > Kitware offers ITK Training Courses, for more information visit: >>> > http://www.kitware.com/products/protraining.php >>> > >>> > Please keep messages on-topic and check the ITK FAQ at: >>> > http://www.itk.org/Wiki/ITK_FAQ >>> > >>> > Follow this link to subscribe/unsubscribe: >>> > http://public.kitware.com/mailman/listinfo/insight-users >>> _____________________________________ >>> Powered by www.kitware.com >>> >>> Visit other Kitware open-source projects at >>> http://www.kitware.com/opensource/opensource.html >>> >>> Kitware offers ITK Training Courses, for more information visit: >>> http://www.kitware.com/products/protraining.php >>> >>> Please keep messages on-topic and check the ITK FAQ at: >>> http://www.itk.org/Wiki/ITK_FAQ >>> >>> Follow this link to subscribe/unsubscribe: >>> http://public.kitware.com/mailman/listinfo/insight-users >>> >>> >>> _____________________________________ >>> Powered by www.kitware.com >>> >>> Visit other Kitware open-source projects at >>> http://www.kitware.com/opensource/opensource.html >>> >>> Kitware offers ITK Training Courses, for more information visit: >>> http://www.kitware.com/products/protraining.php >>> >>> Please keep messages on-topic and check the ITK FAQ at: >>> http://www.itk.org/Wiki/ITK_FAQ >>> >>> Follow this link to subscribe/unsubscribe: >>> http://public.kitware.com/mailman/listinfo/insight-users -- Unpaid intern in BillsBasement at noware dot com From sean at rogue-research.com Mon Jul 31 19:20:03 2017 From: sean at rogue-research.com (Sean McBride) Date: Mon, 31 Jul 2017 19:20:03 -0400 Subject: [ITK-users] [ITK-dev] Migration to GitHub In-Reply-To: References: Message-ID: <20170731232003.1609494024@mail.rogue-research.com> On Mon, 31 Jul 2017 17:07:44 -0400, Matt McCormick said: >We are considering migration of ITK's software process to GitHub, and >we would like your feedback. My 2 cents: - I'd be happy to see a move away from gerrit. - I'd prefer a move to a Kitware-hosted GitLab, like VTK did. - GitHub is nice and all, but not itself open source. GitLab is open source. Better that the infrastructure of an open source project also be open source itself. Sean From bill.lorensen at gmail.com Mon Jul 31 19:55:06 2017 From: bill.lorensen at gmail.com (Bill Lorensen) Date: Mon, 31 Jul 2017 19:55:06 -0400 Subject: [ITK-users] Migration to GitHub In-Reply-To: References: Message-ID: Here are comments I made 3 years ago on the VTK discussion about changing VTK's code review process. ------------- Berk, I think we need to reach out to potential developers. Especially those outside of Kitware(and their paying customers) and the long term VTK developers outside Kitware. Those communities can adapt to anything. We need to focus on is how can we can attract new developers. In the past, new processes were adopted and adapted by Kitware, their customers and hard core VTK developers with very little input from the broader community of potential developers. ITK is going through the same issues but addressing the issues not through process change. They are looking at outreach and better documentation of the current process. Matt McCormick at Kitware has been leading this effort. I think there are lots of non-process improvements possible. But I don't have a silver bullet for attracting new developers. Perhaps VTK is too old school for today's developers. Stuck with an old architecture, old graphics architecture, old and complex languages. I honestly don't know what the root causes are. If we only include the old-timers in theses discussion then we will not attract a younger set of devleopers. Bill --------------- On Mon, Jul 31, 2017 at 5:07 PM, Matt McCormick wrote: > Hi folks, > > We are considering migration of ITK's software process to GitHub, and > we would like your feedback. > > As an open-source, community-driven project, mechanisms to communicate > and interact with the community are a high priority for ITK. > Contributing should be as easy as possible. Increasingly over the past > many years, GitHub has become the de facto place to interact for open > source development. It is now a hub for: > > Microsoft > Facebook > Google > The Scientific Python Community > The 3D Slicer Community > > Our InsightSoftwareConsortium GitHub organization [1] already has 67 > people in it and 74 repositories. There are hundreds of projects that > depend on ITK on GitHub. Many ITK developers are familiar with the > development process on GitHub (i.e the pull request process) and > already have an account on this platform. There are also advantages to > linking issues and commits with other projects and repositories. Since > ITK thrives on the open-source development idea, everyone who wants to > help the project should be able to contribute, and therefore it should > be as easy as possible to start participating in the community. > > Recently, GitHub's code review capabilities have greatly improved, > which make it more feasible to coordinate contributions for a large > project like ITK. And, there are many existing GitHub-integrated > services that we can leverage. > > Thanks to resources from the National Library of Medicine and > technological advances, it is now feasible to migrate the project's > software process to GitHub. There are many infrastructural aspects to > the migration, and it would take multiple months to complete. Please > let us know your thoughts before we embark on the journey. > > > [1] https://github.com/InsightSoftwareConsortium > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users -- Unpaid intern in BillsBasement at noware dot com From nickmarch31 at yahoo.com Mon Jul 31 20:07:33 2017 From: nickmarch31 at yahoo.com (Nick Cullen) Date: Tue, 1 Aug 2017 00:07:33 +0000 (UTC) Subject: [ITK-users] Migration to GitHub In-Reply-To: References: Message-ID: <1190885272.3593749.1501546053079@mail.yahoo.com> As a new user, I think this is a no brainer. Along those lines, I'm not sure if this email-chain users list is the main way the community asks questions (maybe I'm missing some other forum?) but if so, that desperately should be updated. See?PyTorch Forums?for an example of what some modern open-source software tools use. It's built with?https://github.com/discourse/discourse?which lets you embed code and has good search capabilities. | | | | | | | | | | | PyTorch Forums A place to discuss PyTorch code, issues, install, research | | | | On Monday, July 31, 2017 7:55 PM, Bill Lorensen wrote: Here are comments I made 3 years ago on the VTK discussion about changing VTK's code review process. ------------- Berk, I think we need to reach out to potential developers. Especially those outside of Kitware(and their paying customers) and the long term VTK developers outside Kitware. Those communities can adapt to anything. We need to focus on is how can we can attract new developers. In the past, new processes were adopted and adapted by Kitware, their customers and hard core VTK developers with very little input from the broader community of potential developers. ITK is going through the same issues but addressing the issues not through process change. They are looking at outreach and better documentation of the current process. Matt McCormick at Kitware has been leading this effort. I think there are lots of non-process improvements possible. But I don't have a silver bullet for attracting new developers. Perhaps VTK is too old school for today's developers. Stuck with an old architecture, old graphics architecture, old and complex languages. I honestly don't know what the root causes are. If we only include the old-timers in theses discussion then we will not attract a younger set of devleopers. Bill --------------- On Mon, Jul 31, 2017 at 5:07 PM, Matt McCormick wrote: > Hi folks, > > We are considering migration of ITK's software process to GitHub, and > we would like your feedback. > > As an open-source, community-driven project, mechanisms to communicate > and interact with the community are a high priority for ITK. > Contributing should be as easy as possible. Increasingly over the past > many years, GitHub has become the de facto place to interact for open > source development. It is now a hub for: > >? Microsoft >? Facebook >? Google >? The Scientific Python Community >? The 3D Slicer Community > > Our InsightSoftwareConsortium GitHub organization [1] already has 67 > people in it and 74 repositories. There are hundreds of projects that > depend on ITK on GitHub. Many ITK developers are familiar with the > development process on GitHub (i.e the pull request process) and > already have an account on this platform. There are also advantages to > linking issues and commits with other projects and repositories. Since > ITK thrives on the open-source development idea, everyone who wants to > help the project should be able to contribute, and therefore it should > be as easy as possible to start participating in the community. > > Recently, GitHub's code review capabilities have greatly improved, > which make it more feasible to coordinate contributions for a large > project like ITK. And, there are many existing GitHub-integrated > services that we can leverage. > > Thanks to resources from the National Library of Medicine and > technological advances, it is now feasible to migrate the project's > software process to GitHub. There are many infrastructural aspects to > the migration, and it would take multiple months to complete. Please > let us know your thoughts before we embark on the journey. > > > [1] https://github.com/InsightSoftwareConsortium > _____________________________________ > Powered by www.kitware.com > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Kitware offers ITK Training Courses, for more information visit: > http://www.kitware.com/products/protraining.php > > Please keep messages on-topic and check the ITK FAQ at: > http://www.itk.org/Wiki/ITK_FAQ > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/insight-users -- Unpaid intern in BillsBasement at noware dot com _____________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Kitware offers ITK Training Courses, for more information visit: http://www.kitware.com/products/protraining.php Please keep messages on-topic and check the ITK FAQ at: http://www.itk.org/Wiki/ITK_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/insight-users -------------- next part -------------- An HTML attachment was scrubbed... URL: From lasso at queensu.ca Mon Jul 31 20:14:22 2017 From: lasso at queensu.ca (Andras Lasso) Date: Tue, 1 Aug 2017 00:14:22 +0000 Subject: [ITK-users] [ITK] [ITK-dev] Migration to GitHub In-Reply-To: References: Message-ID: > I think the key factor is "community", and GitHub has the open source community. Exactly! As a project leader, I don't like really GitHub as many features are missing (that are standard on other project hosting services), you have no influence on how things are evolving, there is effectively zero support or customization (at least for free plans). However, our users and contributors prefer/demand GitHub, as they are already familiar with it, know how to submit pull request, how issues are managed, and already have account set up. About GitHub/Kitware GitLab: I heard that VTK is going to move to GitHub, too. Maybe I misunderstood, but make sure to talk to VTK folks before considering moving to GitLab. Anyway, as a very active user but only occasional contributor of VTK, I find VTK GitLab quite frustrating due to that: 1. It is slow. I heard that it's fast when accessed from inside Kitware network, but most community members are outside. 2. I need to re-learn each time I use it: I review code, submit PR or bug report once in every few months - and each time I need to spend 20-30 minutes extra, just to find out how things work. Andras -----Original Message----- From: Community [mailto:community-bounces at itk.org] On Behalf Of Matt McCormick Sent: Monday, July 31, 2017 7:00 PM To: Bill Lorensen Cc: Insight-Users ; Hans Johnson ; Insight Developers List Subject: Re: [ITK] [ITK-dev] [ITK-users] Migration to GitHub I have followed VTK's migration to GitLab, and Kitware has done an excellent job with it. That said, I still think GitHub is the better choice for ITK. Also, the technical and social situation has changed in the time since VTK moved to GitLab. I think the key factor is "community", and GitHub has the open source community. On Mon, Jul 31, 2017 at 6:42 PM, Bill Lorensen wrote: > Vtk moved to GitLab. Have you checked with the Kitware folks to see > why they didn't use gitlab? For me, either github or gitlab is great. > > On Jul 31, 2017 6:03 PM, "Johnson, Hans J" wrote: >> >> 1000 x +1 >> >> I enthusiastically support this proposal. >> >> Hans >> >> >> On 7/31/17, 4:57 PM, "Insight-users on behalf of Jim Miller" >> wrote: >> >> +1 >> >> Jim >> >> > On Jul 31, 2017, at 5:07 PM, Matt McCormick >> wrote: >> > >> > Hi folks, >> > >> > We are considering migration of ITK's software process to >> GitHub, and >> > we would like your feedback. >> > >> > As an open-source, community-driven project, mechanisms to >> communicate >> > and interact with the community are a high priority for ITK. >> > Contributing should be as easy as possible. Increasingly over >> the past >> > many years, GitHub has become the de facto place to interact >> for open >> > source development. It is now a hub for: >> > >> > Microsoft >> > Facebook >> > Google >> > The Scientific Python Community >> > The 3D Slicer Community >> > >> > Our InsightSoftwareConsortium GitHub organization [1] already has 67 >> > people in it and 74 repositories. There are hundreds of >> projects that >> > depend on ITK on GitHub. Many ITK developers are familiar with the >> > development process on GitHub (i.e the pull request process) and >> > already have an account on this platform. There are also >> advantages to >> > linking issues and commits with other projects and repositories. >> Since >> > ITK thrives on the open-source development idea, everyone who >> wants to >> > help the project should be able to contribute, and therefore it >> should >> > be as easy as possible to start participating in the community. >> > >> > Recently, GitHub's code review capabilities have greatly improved, >> > which make it more feasible to coordinate contributions for a large >> > project like ITK. And, there are many existing GitHub-integrated >> > services that we can leverage. >> > >> > Thanks to resources from the National Library of Medicine and >> > technological advances, it is now feasible to migrate the project's >> > software process to GitHub. There are many infrastructural >> aspects to >> > the migration, and it would take multiple months to complete. Please >> > let us know your thoughts before we embark on the journey. >> > >> > >> > [1] https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FInsightSoftwareConsortium&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=onq3vW0pCjrT8pDNShHXc4JkohBMBoHv1lxOD6Nkg4o%3D&reserved=0 >> > _____________________________________ >> > Powered by https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=TbmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 >> > >> > Visit other Kitware open-source projects at >> > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu5P9Xb8JPOsASbPMNc%3D&reserved=0 >> > >> > Kitware offers ITK Training Courses, for more information visit: >> > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=iR5J0Yx6p31iobZibGN4nJbHsd2mYmeNshJVj12Azgw%3D&reserved=0 >> > >> > Please keep messages on-topic and check the ITK FAQ at: >> > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.itk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0%3D&reserved=0 >> > >> > Follow this link to subscribe/unsubscribe: >> > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpublic.kitware.com%2Fmailman%2Flistinfo%2Finsight-users&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=3rk3ntG%2Fvv1h8UgHGKvxd8FcajlDjZqK6BHweskvql8%3D&reserved=0 >> _____________________________________ >> Powered by >> https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&da >> ta=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7C >> d61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=T >> bmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 >> >> Visit other Kitware open-source projects at >> >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >> itware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40quee >> nsu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb28 >> 38b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu >> 5P9Xb8JPOsASbPMNc%3D&reserved=0 >> >> Kitware offers ITK Training Courses, for more information visit: >> >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >> itware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queens >> u.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838 >> b925c%7C1%7C0%7C636371388439104668&sdata=iR5J0Yx6p31iobZibGN4nJbHsd2m >> YmeNshJVj12Azgw%3D&reserved=0 >> >> Please keep messages on-topic and check the ITK FAQ at: >> >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.i >> tk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d04 >> 9d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C >> 636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0% >> 3D&reserved=0 >> >> Follow this link to subscribe/unsubscribe: >> >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpubli >> c.kitware.com%2Fmailman%2Flistinfo%2Finsight-users&data=02%7C01%7Clas >> so%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d5 >> 82c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=3rk3ntG%2Fvv1h8Ug >> HGKvxd8FcajlDjZqK6BHweskvql8%3D&reserved=0 >> >> >> _____________________________________ >> Powered by >> https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&da >> ta=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7C >> d61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=T >> bmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 >> >> Visit other Kitware open-source projects at >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >> itware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40quee >> nsu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb28 >> 38b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu >> 5P9Xb8JPOsASbPMNc%3D&reserved=0 >> >> Kitware offers ITK Training Courses, for more information visit: >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >> itware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queens >> u.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838 >> b925c%7C1%7C0%7C636371388439104668&sdata=iR5J0Yx6p31iobZibGN4nJbHsd2m >> YmeNshJVj12Azgw%3D&reserved=0 >> >> Please keep messages on-topic and check the ITK FAQ at: >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.i >> tk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d04 >> 9d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C >> 636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0% >> 3D&reserved=0 >> >> Follow this link to subscribe/unsubscribe: >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpubli >> c.kitware.com%2Fmailman%2Flistinfo%2Finsight-users&data=02%7C01%7Clas >> so%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d5 >> 82c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=3rk3ntG%2Fvv1h8Ug >> HGKvxd8FcajlDjZqK6BHweskvql8%3D&reserved=0 _______________________________________________ Powered by https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=TbmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 Visit other Kitware open-source projects at https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu5P9Xb8JPOsASbPMNc%3D&reserved=0 Kitware offers ITK Training Courses, for more information visit: https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fkitware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=4W%2B%2B3MiNoGmr%2FKnI9Kmyl4BPOJ0%2BDu9Mcdgk5A%2Foi3c%3D&reserved=0 Please keep messages on-topic and check the ITK FAQ at: https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.itk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0%3D&reserved=0 Follow this link to subscribe/unsubscribe: https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpublic.kitware.com%2Fmailman%2Flistinfo%2Finsight-developers&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=aJgjy9V6YWhdNpqDtQSNkBEfKEW6dNcKVW3C1fT%2FH9Q%3D&reserved=0 _______________________________________________ Community mailing list Community at itk.org https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpublic.kitware.com%2Fmailman%2Flistinfo%2Fcommunity&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=7%2FDK5kxboSdWy9zTD2f%2FP8CqdebW%2B82BJZQXMFQfCOQ%3D&reserved=0 From bill.lorensen at gmail.com Mon Jul 31 20:33:45 2017 From: bill.lorensen at gmail.com (Bill Lorensen) Date: Mon, 31 Jul 2017 20:33:45 -0400 Subject: [ITK-users] [ITK] [ITK-dev] Migration to GitHub In-Reply-To: References: Message-ID: Andras, Each of our systems, VTK, ITK and Slicer use a different process. I am only comfortable with the one that I am currently using. If I change from VTK to Slicer, I need to relearn. Even from VTK to ITK I have to relearn a bit. Until we all use the same process, we will have these issues. And that I can assure you, will never happen... Bill On Mon, Jul 31, 2017 at 8:14 PM, Andras Lasso wrote: >> I think the key factor is "community", and GitHub has the open source community. > > Exactly! As a project leader, I don't like really GitHub as many features are missing (that are standard on other project hosting services), you have no influence on how things are evolving, there is effectively zero support or customization (at least for free plans). However, our users and contributors prefer/demand GitHub, as they are already familiar with it, know how to submit pull request, how issues are managed, and already have account set up. > > About GitHub/Kitware GitLab: > > I heard that VTK is going to move to GitHub, too. Maybe I misunderstood, but make sure to talk to VTK folks before considering moving to GitLab. Anyway, as a very active user but only occasional contributor of VTK, I find VTK GitLab quite frustrating due to that: > 1. It is slow. I heard that it's fast when accessed from inside Kitware network, but most community members are outside. > 2. I need to re-learn each time I use it: I review code, submit PR or bug report once in every few months - and each time I need to spend 20-30 minutes extra, just to find out how things work. > > Andras > > -----Original Message----- > From: Community [mailto:community-bounces at itk.org] On Behalf Of Matt McCormick > Sent: Monday, July 31, 2017 7:00 PM > To: Bill Lorensen > Cc: Insight-Users ; Hans Johnson ; Insight Developers List > Subject: Re: [ITK] [ITK-dev] [ITK-users] Migration to GitHub > > I have followed VTK's migration to GitLab, and Kitware has done an excellent job with it. That said, I still think GitHub is the better choice for ITK. Also, the technical and social situation has changed in the time since VTK moved to GitLab. > > I think the key factor is "community", and GitHub has the open source community. > > On Mon, Jul 31, 2017 at 6:42 PM, Bill Lorensen wrote: >> Vtk moved to GitLab. Have you checked with the Kitware folks to see >> why they didn't use gitlab? For me, either github or gitlab is great. >> >> On Jul 31, 2017 6:03 PM, "Johnson, Hans J" wrote: >>> >>> 1000 x +1 >>> >>> I enthusiastically support this proposal. >>> >>> Hans >>> >>> >>> On 7/31/17, 4:57 PM, "Insight-users on behalf of Jim Miller" >>> wrote: >>> >>> +1 >>> >>> Jim >>> >>> > On Jul 31, 2017, at 5:07 PM, Matt McCormick >>> wrote: >>> > >>> > Hi folks, >>> > >>> > We are considering migration of ITK's software process to >>> GitHub, and >>> > we would like your feedback. >>> > >>> > As an open-source, community-driven project, mechanisms to >>> communicate >>> > and interact with the community are a high priority for ITK. >>> > Contributing should be as easy as possible. Increasingly over >>> the past >>> > many years, GitHub has become the de facto place to interact >>> for open >>> > source development. It is now a hub for: >>> > >>> > Microsoft >>> > Facebook >>> > Google >>> > The Scientific Python Community >>> > The 3D Slicer Community >>> > >>> > Our InsightSoftwareConsortium GitHub organization [1] already has 67 >>> > people in it and 74 repositories. There are hundreds of >>> projects that >>> > depend on ITK on GitHub. Many ITK developers are familiar with the >>> > development process on GitHub (i.e the pull request process) and >>> > already have an account on this platform. There are also >>> advantages to >>> > linking issues and commits with other projects and repositories. >>> Since >>> > ITK thrives on the open-source development idea, everyone who >>> wants to >>> > help the project should be able to contribute, and therefore it >>> should >>> > be as easy as possible to start participating in the community. >>> > >>> > Recently, GitHub's code review capabilities have greatly improved, >>> > which make it more feasible to coordinate contributions for a large >>> > project like ITK. And, there are many existing GitHub-integrated >>> > services that we can leverage. >>> > >>> > Thanks to resources from the National Library of Medicine and >>> > technological advances, it is now feasible to migrate the project's >>> > software process to GitHub. There are many infrastructural >>> aspects to >>> > the migration, and it would take multiple months to complete. Please >>> > let us know your thoughts before we embark on the journey. >>> > >>> > >>> > [1] https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FInsightSoftwareConsortium&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=onq3vW0pCjrT8pDNShHXc4JkohBMBoHv1lxOD6Nkg4o%3D&reserved=0 >>> > _____________________________________ >>> > Powered by https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=TbmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 >>> > >>> > Visit other Kitware open-source projects at >>> > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu5P9Xb8JPOsASbPMNc%3D&reserved=0 >>> > >>> > Kitware offers ITK Training Courses, for more information visit: >>> > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=iR5J0Yx6p31iobZibGN4nJbHsd2mYmeNshJVj12Azgw%3D&reserved=0 >>> > >>> > Please keep messages on-topic and check the ITK FAQ at: >>> > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.itk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0%3D&reserved=0 >>> > >>> > Follow this link to subscribe/unsubscribe: >>> > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpublic.kitware.com%2Fmailman%2Flistinfo%2Finsight-users&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=3rk3ntG%2Fvv1h8UgHGKvxd8FcajlDjZqK6BHweskvql8%3D&reserved=0 >>> _____________________________________ >>> Powered by >>> https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&da >>> ta=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7C >>> d61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=T >>> bmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 >>> >>> Visit other Kitware open-source projects at >>> >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >>> itware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40quee >>> nsu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb28 >>> 38b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu >>> 5P9Xb8JPOsASbPMNc%3D&reserved=0 >>> >>> Kitware offers ITK Training Courses, for more information visit: >>> >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >>> itware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queens >>> u.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838 >>> b925c%7C1%7C0%7C636371388439104668&sdata=iR5J0Yx6p31iobZibGN4nJbHsd2m >>> YmeNshJVj12Azgw%3D&reserved=0 >>> >>> Please keep messages on-topic and check the ITK FAQ at: >>> >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.i >>> tk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d04 >>> 9d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C >>> 636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0% >>> 3D&reserved=0 >>> >>> Follow this link to subscribe/unsubscribe: >>> >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpubli >>> c.kitware.com%2Fmailman%2Flistinfo%2Finsight-users&data=02%7C01%7Clas >>> so%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d5 >>> 82c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=3rk3ntG%2Fvv1h8Ug >>> HGKvxd8FcajlDjZqK6BHweskvql8%3D&reserved=0 >>> >>> >>> _____________________________________ >>> Powered by >>> https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&da >>> ta=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7C >>> d61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=T >>> bmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 >>> >>> Visit other Kitware open-source projects at >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >>> itware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40quee >>> nsu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb28 >>> 38b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu >>> 5P9Xb8JPOsASbPMNc%3D&reserved=0 >>> >>> Kitware offers ITK Training Courses, for more information visit: >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >>> itware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queens >>> u.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838 >>> b925c%7C1%7C0%7C636371388439104668&sdata=iR5J0Yx6p31iobZibGN4nJbHsd2m >>> YmeNshJVj12Azgw%3D&reserved=0 >>> >>> Please keep messages on-topic and check the ITK FAQ at: >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.i >>> tk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d04 >>> 9d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C >>> 636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0% >>> 3D&reserved=0 >>> >>> Follow this link to subscribe/unsubscribe: >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpubli >>> c.kitware.com%2Fmailman%2Flistinfo%2Finsight-users&data=02%7C01%7Clas >>> so%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d5 >>> 82c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=3rk3ntG%2Fvv1h8Ug >>> HGKvxd8FcajlDjZqK6BHweskvql8%3D&reserved=0 > _______________________________________________ > Powered by https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=TbmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 > > Visit other Kitware open-source projects at > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu5P9Xb8JPOsASbPMNc%3D&reserved=0 > > Kitware offers ITK Training Courses, for more information visit: > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fkitware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=4W%2B%2B3MiNoGmr%2FKnI9Kmyl4BPOJ0%2BDu9Mcdgk5A%2Foi3c%3D&reserved=0 > > Please keep messages on-topic and check the ITK FAQ at: > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.itk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0%3D&reserved=0 > > Follow this link to subscribe/unsubscribe: > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpublic.kitware.com%2Fmailman%2Flistinfo%2Finsight-developers&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=aJgjy9V6YWhdNpqDtQSNkBEfKEW6dNcKVW3C1fT%2FH9Q%3D&reserved=0 > _______________________________________________ > Community mailing list > Community at itk.org > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpublic.kitware.com%2Fmailman%2Flistinfo%2Fcommunity&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=7%2FDK5kxboSdWy9zTD2f%2FP8CqdebW%2B82BJZQXMFQfCOQ%3D&reserved=0 -- Unpaid intern in BillsBasement at noware dot com From lasso at queensu.ca Mon Jul 31 20:43:22 2017 From: lasso at queensu.ca (Andras Lasso) Date: Tue, 1 Aug 2017 00:43:22 +0000 Subject: [ITK-users] [ITK] [ITK-dev] Migration to GitHub In-Reply-To: References: , Message-ID: Yes, processes are different. But it helps if at least tools are the same. Andras From: Bill Lorensen Sent: Monday, July 31, 2017 20:33 To: Andras Lasso Cc: Matt McCormick; Insight-Users; Hans Johnson; Insight Developers List Subject: Re: [ITK] [ITK-dev] [ITK-users] Migration to GitHub Andras, Each of our systems, VTK, ITK and Slicer use a different process. I am only comfortable with the one that I am currently using. If I change from VTK to Slicer, I need to relearn. Even from VTK to ITK I have to relearn a bit. Until we all use the same process, we will have these issues. And that I can assure you, will never happen... Bill On Mon, Jul 31, 2017 at 8:14 PM, Andras Lasso wrote: >> I think the key factor is "community", and GitHub has the open source community. > > Exactly! As a project leader, I don't like really GitHub as many features are missing (that are standard on other project hosting services), you have no influence on how things are evolving, there is effectively zero support or customization (at least for free plans). However, our users and contributors prefer/demand GitHub, as they are already familiar with it, know how to submit pull request, how issues are managed, and already have account set up. > > About GitHub/Kitware GitLab: > > I heard that VTK is going to move to GitHub, too. Maybe I misunderstood, but make sure to talk to VTK folks before considering moving to GitLab. Anyway, as a very active user but only occasional contributor of VTK, I find VTK GitLab quite frustrating due to that: > 1. It is slow. I heard that it's fast when accessed from inside Kitware network, but most community members are outside. > 2. I need to re-learn each time I use it: I review code, submit PR or bug report once in every few months - and each time I need to spend 20-30 minutes extra, just to find out how things work. > > Andras > > -----Original Message----- > From: Community [mailto:community-bounces at itk.org] On Behalf Of Matt McCormick > Sent: Monday, July 31, 2017 7:00 PM > To: Bill Lorensen > Cc: Insight-Users ; Hans Johnson ; Insight Developers List > Subject: Re: [ITK] [ITK-dev] [ITK-users] Migration to GitHub > > I have followed VTK's migration to GitLab, and Kitware has done an excellent job with it. That said, I still think GitHub is the better choice for ITK. Also, the technical and social situation has changed in the time since VTK moved to GitLab. > > I think the key factor is "community", and GitHub has the open source community. > > On Mon, Jul 31, 2017 at 6:42 PM, Bill Lorensen wrote: >> Vtk moved to GitLab. Have you checked with the Kitware folks to see >> why they didn't use gitlab? For me, either github or gitlab is great. >> >> On Jul 31, 2017 6:03 PM, "Johnson, Hans J" wrote: >>> >>> 1000 x +1 >>> >>> I enthusiastically support this proposal. >>> >>> Hans >>> >>> >>> On 7/31/17, 4:57 PM, "Insight-users on behalf of Jim Miller" >>> wrote: >>> >>> +1 >>> >>> Jim >>> >>> > On Jul 31, 2017, at 5:07 PM, Matt McCormick >>> wrote: >>> > >>> > Hi folks, >>> > >>> > We are considering migration of ITK's software process to >>> GitHub, and >>> > we would like your feedback. >>> > >>> > As an open-source, community-driven project, mechanisms to >>> communicate >>> > and interact with the community are a high priority for ITK. >>> > Contributing should be as easy as possible. Increasingly over >>> the past >>> > many years, GitHub has become the de facto place to interact >>> for open >>> > source development. It is now a hub for: >>> > >>> > Microsoft >>> > Facebook >>> > Google >>> > The Scientific Python Community >>> > The 3D Slicer Community >>> > >>> > Our InsightSoftwareConsortium GitHub organization [1] already has 67 >>> > people in it and 74 repositories. There are hundreds of >>> projects that >>> > depend on ITK on GitHub. Many ITK developers are familiar with the >>> > development process on GitHub (i.e the pull request process) and >>> > already have an account on this platform. There are also >>> advantages to >>> > linking issues and commits with other projects and repositories. >>> Since >>> > ITK thrives on the open-source development idea, everyone who >>> wants to >>> > help the project should be able to contribute, and therefore it >>> should >>> > be as easy as possible to start participating in the community. >>> > >>> > Recently, GitHub's code review capabilities have greatly improved, >>> > which make it more feasible to coordinate contributions for a large >>> > project like ITK. And, there are many existing GitHub-integrated >>> > services that we can leverage. >>> > >>> > Thanks to resources from the National Library of Medicine and >>> > technological advances, it is now feasible to migrate the project's >>> > software process to GitHub. There are many infrastructural >>> aspects to >>> > the migration, and it would take multiple months to complete. Please >>> > let us know your thoughts before we embark on the journey. >>> > >>> > >>> > [1] https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FInsightSoftwareConsortium&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=onq3vW0pCjrT8pDNShHXc4JkohBMBoHv1lxOD6Nkg4o%3D&reserved=0 >>> > _____________________________________ >>> > Powered by https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=TbmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 >>> > >>> > Visit other Kitware open-source projects at >>> > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu5P9Xb8JPOsASbPMNc%3D&reserved=0 >>> > >>> > Kitware offers ITK Training Courses, for more information visit: >>> > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=iR5J0Yx6p31iobZibGN4nJbHsd2mYmeNshJVj12Azgw%3D&reserved=0 >>> > >>> > Please keep messages on-topic and check the ITK FAQ at: >>> > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.itk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0%3D&reserved=0 >>> > >>> > Follow this link to subscribe/unsubscribe: >>> > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpublic.kitware.com%2Fmailman%2Flistinfo%2Finsight-users&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=3rk3ntG%2Fvv1h8UgHGKvxd8FcajlDjZqK6BHweskvql8%3D&reserved=0 >>> _____________________________________ >>> Powered by >>> https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&da >>> ta=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7C >>> d61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=T >>> bmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 >>> >>> Visit other Kitware open-source projects at >>> >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >>> itware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40quee >>> nsu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb28 >>> 38b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu >>> 5P9Xb8JPOsASbPMNc%3D&reserved=0 >>> >>> Kitware offers ITK Training Courses, for more information visit: >>> >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >>> itware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queens >>> u.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838 >>> b925c%7C1%7C0%7C636371388439104668&sdata=iR5J0Yx6p31iobZibGN4nJbHsd2m >>> YmeNshJVj12Azgw%3D&reserved=0 >>> >>> Please keep messages on-topic and check the ITK FAQ at: >>> >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.i >>> tk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d04 >>> 9d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C >>> 636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0% >>> 3D&reserved=0 >>> >>> Follow this link to subscribe/unsubscribe: >>> >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpubli >>> c.kitware.com%2Fmailman%2Flistinfo%2Finsight-users&data=02%7C01%7Clas >>> so%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d5 >>> 82c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=3rk3ntG%2Fvv1h8Ug >>> HGKvxd8FcajlDjZqK6BHweskvql8%3D&reserved=0 >>> >>> >>> _____________________________________ >>> Powered by >>> https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&da >>> ta=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7C >>> d61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=T >>> bmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 >>> >>> Visit other Kitware open-source projects at >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >>> itware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40quee >>> nsu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb28 >>> 38b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu >>> 5P9Xb8JPOsASbPMNc%3D&reserved=0 >>> >>> Kitware offers ITK Training Courses, for more information visit: >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >>> itware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queens >>> u.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838 >>> b925c%7C1%7C0%7C636371388439104668&sdata=iR5J0Yx6p31iobZibGN4nJbHsd2m >>> YmeNshJVj12Azgw%3D&reserved=0 >>> >>> Please keep messages on-topic and check the ITK FAQ at: >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.i >>> tk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d04 >>> 9d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C >>> 636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0% >>> 3D&reserved=0 >>> >>> Follow this link to subscribe/unsubscribe: >>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpubli >>> c.kitware.com%2Fmailman%2Flistinfo%2Finsight-users&data=02%7C01%7Clas >>> so%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d5 >>> 82c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=3rk3ntG%2Fvv1h8Ug >>> HGKvxd8FcajlDjZqK6BHweskvql8%3D&reserved=0 > _______________________________________________ > Powered by https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=TbmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 > > Visit other Kitware open-source projects at > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu5P9Xb8JPOsASbPMNc%3D&reserved=0 > > Kitware offers ITK Training Courses, for more information visit: > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fkitware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=4W%2B%2B3MiNoGmr%2FKnI9Kmyl4BPOJ0%2BDu9Mcdgk5A%2Foi3c%3D&reserved=0 > > Please keep messages on-topic and check the ITK FAQ at: > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.itk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0%3D&reserved=0 > > Follow this link to subscribe/unsubscribe: > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpublic.kitware.com%2Fmailman%2Flistinfo%2Finsight-developers&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=aJgjy9V6YWhdNpqDtQSNkBEfKEW6dNcKVW3C1fT%2FH9Q%3D&reserved=0 > _______________________________________________ > Community mailing list > Community at itk.org > https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpublic.kitware.com%2Fmailman%2Flistinfo%2Fcommunity&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=7%2FDK5kxboSdWy9zTD2f%2FP8CqdebW%2B82BJZQXMFQfCOQ%3D&reserved=0 -- Unpaid intern in BillsBasement at noware dot com -------------- next part -------------- An HTML attachment was scrubbed... URL: From bill.lorensen at gmail.com Mon Jul 31 20:54:10 2017 From: bill.lorensen at gmail.com (Bill Lorensen) Date: Mon, 31 Jul 2017 20:54:10 -0400 Subject: [ITK-users] [ITK] [ITK-dev] Migration to GitHub In-Reply-To: References: Message-ID: Yes, at least they all use git... On Mon, Jul 31, 2017 at 8:43 PM, Andras Lasso wrote: > Yes, processes are different. But it helps if at least tools are the same. > > > > Andras > > > > From: Bill Lorensen > Sent: Monday, July 31, 2017 20:33 > To: Andras Lasso > Cc: Matt McCormick; Insight-Users; Hans Johnson; Insight Developers List > > > Subject: Re: [ITK] [ITK-dev] [ITK-users] Migration to GitHub > > > > Andras, > > Each of our systems, VTK, ITK and Slicer use a different process. I am > only comfortable with the one that I am currently using. If I change > from VTK to Slicer, I need to relearn. Even from VTK to ITK I have to > relearn a bit. > > Until we all use the same process, we will have these issues. And that > I can assure you, will never happen... > > Bill > > On Mon, Jul 31, 2017 at 8:14 PM, Andras Lasso wrote: >>> I think the key factor is "community", and GitHub has the open source >>> community. >> >> Exactly! As a project leader, I don't like really GitHub as many features >> are missing (that are standard on other project hosting services), you have >> no influence on how things are evolving, there is effectively zero support >> or customization (at least for free plans). However, our users and >> contributors prefer/demand GitHub, as they are already familiar with it, >> know how to submit pull request, how issues are managed, and already have >> account set up. >> >> About GitHub/Kitware GitLab: >> >> I heard that VTK is going to move to GitHub, too. Maybe I misunderstood, >> but make sure to talk to VTK folks before considering moving to GitLab. >> Anyway, as a very active user but only occasional contributor of VTK, I find >> VTK GitLab quite frustrating due to that: >> 1. It is slow. I heard that it's fast when accessed from inside Kitware >> network, but most community members are outside. >> 2. I need to re-learn each time I use it: I review code, submit PR or bug >> report once in every few months - and each time I need to spend 20-30 >> minutes extra, just to find out how things work. >> >> Andras >> >> -----Original Message----- >> From: Community [mailto:community-bounces at itk.org] On Behalf Of Matt >> McCormick >> Sent: Monday, July 31, 2017 7:00 PM >> To: Bill Lorensen >> Cc: Insight-Users ; Hans Johnson >> ; Insight Developers List >> >> Subject: Re: [ITK] [ITK-dev] [ITK-users] Migration to GitHub >> >> I have followed VTK's migration to GitLab, and Kitware has done an >> excellent job with it. That said, I still think GitHub is the better choice >> for ITK. Also, the technical and social situation has changed in the time >> since VTK moved to GitLab. >> >> I think the key factor is "community", and GitHub has the open source >> community. >> >> On Mon, Jul 31, 2017 at 6:42 PM, Bill Lorensen >> wrote: >>> Vtk moved to GitLab. Have you checked with the Kitware folks to see >>> why they didn't use gitlab? For me, either github or gitlab is great. >>> >>> On Jul 31, 2017 6:03 PM, "Johnson, Hans J" >>> wrote: >>>> >>>> 1000 x +1 >>>> >>>> I enthusiastically support this proposal. >>>> >>>> Hans >>>> >>>> >>>> On 7/31/17, 4:57 PM, "Insight-users on behalf of Jim Miller" >>>> wrote: >>>> >>>> +1 >>>> >>>> Jim >>>> >>>> > On Jul 31, 2017, at 5:07 PM, Matt McCormick >>>> wrote: >>>> > >>>> > Hi folks, >>>> > >>>> > We are considering migration of ITK's software process to >>>> GitHub, and >>>> > we would like your feedback. >>>> > >>>> > As an open-source, community-driven project, mechanisms to >>>> communicate >>>> > and interact with the community are a high priority for ITK. >>>> > Contributing should be as easy as possible. Increasingly over >>>> the past >>>> > many years, GitHub has become the de facto place to interact >>>> for open >>>> > source development. It is now a hub for: >>>> > >>>> > Microsoft >>>> > Facebook >>>> > Google >>>> > The Scientific Python Community >>>> > The 3D Slicer Community >>>> > >>>> > Our InsightSoftwareConsortium GitHub organization [1] already has >>>> 67 >>>> > people in it and 74 repositories. There are hundreds of >>>> projects that >>>> > depend on ITK on GitHub. Many ITK developers are familiar with the >>>> > development process on GitHub (i.e the pull request process) and >>>> > already have an account on this platform. There are also >>>> advantages to >>>> > linking issues and commits with other projects and repositories. >>>> Since >>>> > ITK thrives on the open-source development idea, everyone who >>>> wants to >>>> > help the project should be able to contribute, and therefore it >>>> should >>>> > be as easy as possible to start participating in the community. >>>> > >>>> > Recently, GitHub's code review capabilities have greatly improved, >>>> > which make it more feasible to coordinate contributions for a >>>> large >>>> > project like ITK. And, there are many existing GitHub-integrated >>>> > services that we can leverage. >>>> > >>>> > Thanks to resources from the National Library of Medicine and >>>> > technological advances, it is now feasible to migrate the >>>> project's >>>> > software process to GitHub. There are many infrastructural >>>> aspects to >>>> > the migration, and it would take multiple months to complete. >>>> Please >>>> > let us know your thoughts before we embark on the journey. >>>> > >>>> > >>>> > [1] >>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FInsightSoftwareConsortium&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=onq3vW0pCjrT8pDNShHXc4JkohBMBoHv1lxOD6Nkg4o%3D&reserved=0 >>>> > _____________________________________ >>>> > Powered by >>>> https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=TbmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 >>>> > >>>> > Visit other Kitware open-source projects at >>>> > >>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu5P9Xb8JPOsASbPMNc%3D&reserved=0 >>>> > >>>> > Kitware offers ITK Training Courses, for more information visit: >>>> > >>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=iR5J0Yx6p31iobZibGN4nJbHsd2mYmeNshJVj12Azgw%3D&reserved=0 >>>> > >>>> > Please keep messages on-topic and check the ITK FAQ at: >>>> > >>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.itk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0%3D&reserved=0 >>>> > >>>> > Follow this link to subscribe/unsubscribe: >>>> > >>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpublic.kitware.com%2Fmailman%2Flistinfo%2Finsight-users&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=3rk3ntG%2Fvv1h8UgHGKvxd8FcajlDjZqK6BHweskvql8%3D&reserved=0 >>>> _____________________________________ >>>> Powered by >>>> https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&da >>>> ta=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7C >>>> d61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=T >>>> bmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 >>>> >>>> Visit other Kitware open-source projects at >>>> >>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >>>> itware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40quee >>>> nsu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb28 >>>> 38b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu >>>> 5P9Xb8JPOsASbPMNc%3D&reserved=0 >>>> >>>> Kitware offers ITK Training Courses, for more information visit: >>>> >>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >>>> itware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queens >>>> u.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838 >>>> b925c%7C1%7C0%7C636371388439104668&sdata=iR5J0Yx6p31iobZibGN4nJbHsd2m >>>> YmeNshJVj12Azgw%3D&reserved=0 >>>> >>>> Please keep messages on-topic and check the ITK FAQ at: >>>> >>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.i >>>> tk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d04 >>>> 9d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C >>>> 636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0% >>>> 3D&reserved=0 >>>> >>>> Follow this link to subscribe/unsubscribe: >>>> >>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpubli >>>> c.kitware.com%2Fmailman%2Flistinfo%2Finsight-users&data=02%7C01%7Clas >>>> so%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d5 >>>> 82c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=3rk3ntG%2Fvv1h8Ug >>>> HGKvxd8FcajlDjZqK6BHweskvql8%3D&reserved=0 >>>> >>>> >>>> _____________________________________ >>>> Powered by >>>> https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&da >>>> ta=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7C >>>> d61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=T >>>> bmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 >>>> >>>> Visit other Kitware open-source projects at >>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >>>> itware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40quee >>>> nsu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb28 >>>> 38b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu >>>> 5P9Xb8JPOsASbPMNc%3D&reserved=0 >>>> >>>> Kitware offers ITK Training Courses, for more information visit: >>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.k >>>> itware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queens >>>> u.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838 >>>> b925c%7C1%7C0%7C636371388439104668&sdata=iR5J0Yx6p31iobZibGN4nJbHsd2m >>>> YmeNshJVj12Azgw%3D&reserved=0 >>>> >>>> Please keep messages on-topic and check the ITK FAQ at: >>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.i >>>> tk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d04 >>>> 9d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C >>>> 636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0% >>>> 3D&reserved=0 >>>> >>>> Follow this link to subscribe/unsubscribe: >>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpubli >>>> c.kitware.com%2Fmailman%2Flistinfo%2Finsight-users&data=02%7C01%7Clas >>>> so%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d5 >>>> 82c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=3rk3ntG%2Fvv1h8Ug >>>> HGKvxd8FcajlDjZqK6BHweskvql8%3D&reserved=0 >> _______________________________________________ >> Powered by >> https://na01.safelinks.protection.outlook.com/?url=www.kitware.com&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=TbmgQahvMJx3Czk56R8%2Bg3WKDWopBJkIpgnqkxx3xj4%3D&reserved=0 >> >> Visit other Kitware open-source projects at >> >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.kitware.com%2Fopensource%2Fopensource.html&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=BQ97jxO1o0jxL0Nk0n1styLRKu5P9Xb8JPOsASbPMNc%3D&reserved=0 >> >> Kitware offers ITK Training Courses, for more information visit: >> >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fkitware.com%2Fproducts%2Fprotraining.php&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=4W%2B%2B3MiNoGmr%2FKnI9Kmyl4BPOJ0%2BDu9Mcdgk5A%2Foi3c%3D&reserved=0 >> >> Please keep messages on-topic and check the ITK FAQ at: >> >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.itk.org%2FWiki%2FITK_FAQ&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=lnYum27haYjI7jbzMagLEL0eg13MhwdARYTPZivjDe0%3D&reserved=0 >> >> Follow this link to subscribe/unsubscribe: >> >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpublic.kitware.com%2Fmailman%2Flistinfo%2Finsight-developers&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=aJgjy9V6YWhdNpqDtQSNkBEfKEW6dNcKVW3C1fT%2FH9Q%3D&reserved=0 >> _______________________________________________ >> Community mailing list >> Community at itk.org >> >> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fpublic.kitware.com%2Fmailman%2Flistinfo%2Fcommunity&data=02%7C01%7Classo%40queensu.ca%7C96f312d049d7448d6db208d4d867f888%7Cd61ecb3b38b142d582c4efb2838b925c%7C1%7C0%7C636371388439104668&sdata=7%2FDK5kxboSdWy9zTD2f%2FP8CqdebW%2B82BJZQXMFQfCOQ%3D&reserved=0 > > > > -- > Unpaid intern in BillsBasement at noware dot com -- Unpaid intern in BillsBasement at noware dot com