目录
sitk::ERROR: No ImageJ/Fiji application found.
执行simpleITK框架进行图像配准时候发生如下错误:
sitk::ERROR: No ImageJ/Fiji application found.
执行命令如下,可以使用不同的变换器。
python dalign.py 1703801.jpg 1703801_1.jpg composite.tfm
python dalign.py 1703801.jpg 1703801_1.jpg euler2D.tfm
python dalign.py 1703801.jpg 1703801_1.jpg RIRE_training_001_CT_2_mr_T1.tfm
python dalign.py 1703801.jpg 1703801_1.jpg composescaleskewversor.tfm
python dalign.py 1703801.jpg 1703801_1.jpg affine.tfm
- import SimpleITK as sitk
- import sys
- import os
-
-
- def command_iteration(filter):
- print(f"{filter.GetElapsedIterations():3} = {filter.GetMetric():10.5f}")
-
-
- if len(sys.argv) < 4:
- print(
- f"Usage: {sys.argv[0]}"
- + "
" - )
- sys.exit(1)
-
- fixed = sitk.ReadImage(sys.argv[1], sitk.sitkFloat32)
-
- moving = sitk.ReadImage(sys.argv[2], sitk.sitkFloat32)
-
- matcher = sitk.HistogramMatchingImageFilter()
- matcher.SetNumberOfHistogramLevels(1024)
- matcher.SetNumberOfMatchPoints(7)
- matcher.ThresholdAtMeanIntensityOn()
- moving = matcher.Execute(moving, fixed)
-
- # The basic Demons Registration Filter
- # Note there is a whole family of Demons Registration algorithms included in
- # SimpleITK
- demons = sitk.DemonsRegistrationFilter()
- demons.SetNumberOfIterations(50)
- # Standard deviation for Gaussian smoothing of displacement field
- demons.SetStandardDeviations(1.0)
-
- demons.AddCommand(sitk.sitkIterationEvent, lambda: command_iteration(demons))
-
- displacementField = demons.Execute(fixed, moving)
-
- print("-------")
- print(f"Number Of Iterations: {demons.GetElapsedIterations()}")
- print(f" RMS: {demons.GetRMSChange()}")
-
- outTx = sitk.DisplacementFieldTransform(displacementField)
-
- sitk.WriteTransform(outTx, sys.argv[3])
-
- if "SITK_NOSHOW" not in os.environ:
- resampler = sitk.ResampleImageFilter()
- resampler.SetReferenceImage(fixed)
- resampler.SetInterpolator(sitk.sitkLinear)
- resampler.SetDefaultPixelValue(100)
- resampler.SetTransform(outTx)
-
- out = resampler.Execute(moving)
- simg1 = sitk.Cast(sitk.RescaleIntensity(fixed), sitk.sitkUInt8)
- simg2 = sitk.Cast(sitk.RescaleIntensity(out), sitk.sitkUInt8)
- # Use the // floor division operator so that the pixel type is
- # the same for all three images which is the expectation for
- # the compose filter.
- cimg = sitk.Compose(simg1, simg2, simg1 // 2.0 + simg2 // 2.0)
- sitk.Show(cimg, "DeformableRegistration1 Composition")
注意:fiji软件包的底层环境是java,所以需要提前安装好java哦。
可以再cmd中输入java命令测试,你的系统是否已经安装好了java.
下载fiji软件包:笔者选择windows64位
下载完成之后,解压,会得到一个叫做Fiji.app的文件夹。
将Fiji.app的文件夹拷贝包笔者使用的anaconda主环境的Scripts文件夹中。
D:\anaconda\Scripts\Fiji.app
OK了
(base) C:\Users\users>python align.py 1703801.jpg 1703801_1.jpg euler2D.tfm
1 = 316.08310
2 = 309.61603
3 = 305.84348
4 = 303.55265
5 = 301.97677
6 = 300.83932
7 = 299.98187
8 = 299.30239
9 = 298.74999
10 = 298.26859
11 = 297.87110
12 = 297.51645
13 = 297.20165
14 = 296.92658
15 = 296.66421
16 = 296.44000
17 = 296.22853
18 = 296.03984
19 = 295.86223
20 = 295.70708
21 = 295.54896
22 = 295.39734
23 = 295.27245
24 = 295.14585
25 = 295.02095
26 = 294.90249
27 = 294.78907
28 = 294.69944
29 = 294.59759
30 = 294.51432
31 = 294.42624
32 = 294.35778
33 = 294.27413
34 = 294.21444
35 = 294.13871
36 = 294.07736
37 = 294.01093
38 = 293.96671
39 = 293.89736
40 = 293.85241
41 = 293.79037
42 = 293.75224
43 = 293.69498
44 = 293.66584
45 = 293.60078
46 = 293.57719
47 = 293.52466
48 = 293.49716
49 = 293.45349
50 = 293.41868
-------
Number Of Iterations: 50
RMS: 0.25455084462799155
Traceback (most recent call last):
File "align.py", line 61, in
sitk.Show(cimg, "DeformableRegistration1 Composition")
File "D:\anaconda\lib\site-packages\SimpleITK\SimpleITK.py", line 7768, in Show
return _SimpleITK.Show(*args, **kwargs)
RuntimeError: Exception thrown in SimpleITK Show: D:\a\1\sitk\Code\IO\src\sitkImageViewer.cxx:620:
sitk::ERROR: No ImageJ/Fiji application found.
(base) C:\Users\users>
参考:simpleITK
参考:https://blog.csdn.net/weixin_44727457/article/details/109661412
参考:https://blog.csdn.net/Magician0619/article/details/124046418
