C# 不支持8位无符号整数的向量
我正在尝试使用简单的itk托管dll在.bmp图像上应用CannyEdge DetectionImageFilter 这是我的密码:C# 不支持8位无符号整数的向量,c#,c++,itk,image-formats,C#,C++,Itk,Image Formats,我正在尝试使用简单的itk托管dll在.bmp图像上应用CannyEdge DetectionImageFilter 这是我的密码: itk.simple.Image image1= SimpleITK.ReadImage("Input.bmp"); ImageFileReader read = new ImageFileReader(); read.SetFileName("Input.bmp"); read.Execute(); CannyEdgeDetectionImageFilter
itk.simple.Image image1= SimpleITK.ReadImage("Input.bmp");
ImageFileReader read = new ImageFileReader();
read.SetFileName("Input.bmp");
read.Execute();
CannyEdgeDetectionImageFilter canny = new CannyEdgeDetectionImageFilter();
itk.simple.Image image2= canny.Execute(image1);//I got below exception here.
ImageFileWriter write = new ImageFileWriter();
write.SetFileName("Output.bmp");
write.Execute(image2,"Output.bmp", true);
我在执行CannyEdgeDetectionImageFilter时遇到此异常
sitk::错误:像素类型:8位无符号整数的向量不是
在2D byclass itk::simple::CannyEdgeDetectionImageFilter中受支持
如何将此不受支持的内容转换为受支持的SimpleTk
下面是对我的代码的一些补充。我尝试将8位无符号整数的向量转换为支持的向量,但在这里我失败了
CastImageFilter cast = new CastImageFilter();
PixelIDValueEnum p= cast.GetOutputPixelType();
image1= SimpleITK.Cast(image1, p);//I got below exception here.
sitk::错误:筛选器不支持从的强制转换向量强制转换
8位无符号整数到32位浮点
我还能做些什么来处理这个代码吗
非常感谢您的帮助。有几种方法可以将Canny过滤器应用于RGB图像。(我假设它是RGB图像?) 有许多方法可以将多分量图像转换为标量图像。简单的强制转换没有很好的定义。它可能意味着亮度、矢量大小等 一个选项是在图像的每个通道上独立运行该算法,并获得红边图像、蓝边图像和绿边图像。下面是一些伪代码:
for i in range(rgbimage.GetNumberOfComponentsPerPixel()):
component_image = sitk.VectorIndexSelectionCast(rgbimage, i, sitk.sitkFloat32)
edge_images[i] = sitk.CanneyEdgeDetection(component_image)
edge_image = sitk.Compose(edge_images)
或者,您可能需要标量边缘图像。您可以从RGB通道导出亮度、亮度或亮度,然后只运行一次Canny过滤器。对于2D byclass中不支持的8位无符号整数错误,您可能需要在读取图像时更改方式,如:
image=sitk.ReadImage(“input.jpg”,sitk.sitkInt8)
现在sitk.CurvatureFlow
和imgWhiteMatter=sitk.ConnectedThreshold
可以工作了
希望有帮助。没问题。记住,好的格式总是你的朋友;)