小编Dot*_*ass的帖子

图像直方图的高斯混合模型

我试图基于像素强度值对2D MR图像的不同区域进行自动图像分割.第一步是在图像的直方图上实现高斯混合模型.

test.jpg放在

我需要将从score_samples方法中获得的高斯图绘制到直方图上.我已经尝试按照(理解高斯混合模型)的答案中的代码.

然而,得到的高斯不能完全匹配直方图.如何让高斯与直方图匹配?

import numpy as np
import cv2
import matplotlib.pyplot as plt
from sklearn.mixture import GaussianMixture

# Read image
img = cv2.imread("test.jpg",0)

hist = cv2.calcHist([img],[0],None,[256],[0,256])
hist[0] = 0     # Removes background pixels

# Fit GMM
gmm = GaussianMixture(n_components = 3)
gmm = gmm.fit(hist)

# Evaluate GMM
gmm_x = np.linspace(0,255,256)
gmm_y = np.exp(gmm.score_samples(gmm_x.reshape(-1,1)))


# Plot histograms and gaussian curves
fig, ax = plt.subplots()
ax.hist(img.ravel(),255,[1,256])
ax.plot(gmm_x, gmm_y, color="crimson", lw=4, label="GMM")

ax.set_ylabel("Frequency")
ax.set_xlabel("Pixel Intensity")

plt.legend()

plt.show()
Run Code Online (Sandbox Code Playgroud)

我还尝试用总和手动构建高斯. …

python gaussian image-segmentation scikit-learn mixture-model

8
推荐指数
1
解决办法
3031
查看次数

SimpleITK.Show() 在 Linux 上的 ImageJ 中生成错误

编辑注意:这个问题最初的措辞是

如何在 Linux 中将 SimpleITK.Show() 链接到 imageJ?

通过将 SimpleITK 1.0.0 升级到 1.0.1,我能够从 SimpleITK.Show() 启动 ImageJ。但是,ImageJ 无法打开“sample_mri.hdr”。ImageJ 生成以下错误消息。

文件格式不支持,请阅读器

插件不可用,或者未找到。

根/本地/linux/ImageJ/open(“/temp/TempFile-7131-2.nii”);

root/local/linux/ImageJ/rename("/temp/TempFile-7131-2.nii");

我已经为 ImageJ 安装了适当的插件来读取 hdr/img (分析格式)。我可以通过转到 file>open 直接从 ImageJ 打开“sample_mri.hdr”

调试消息:

sitk.Show(img, 'sample image', debugOn=True)
Run Code Online (Sandbox Code Playgroud)

FindApplication 搜索路径:[ ./Fiji.app、/cis/home/vwang/bin/Fiji.app、~/bin/Fiji.app、/opt/Fiji.app、/usr/local/Fiji.app ]

结果:

FindApplication 搜索路径:[ ./Fiji.app、/cis/home/vwang/bin/Fiji.app、~/bin/Fiji.app、/opt/Fiji.app、/usr/local/Fiji.app ]

结果:

FindApplication 搜索路径:[ ./ImageJ、/cis/home/vwang/bin/ImageJ、~/bin/ImageJ、/opt/ImageJ、/usr/local/ImageJ ]

结果:

FindApplication 搜索路径:[ ./, /cis/home/vwang/bin/, ~/bin/, /opt/, /usr/local/ ]

结果:/usr/local/bin/ImageJ

显示命令: '/usr/local/bin/ImageJ' '-e' 'open("/tmp/sample-4434-0.nii"); 重命名(“样本”);'

插件:

如何在 Linux 中将 SimpleITK.Show() 链接到 imageJ?

我已经下载了ImageJ,可以直接运行ImageJ来查看图像。过去曾提出并回答过类似的问题(Can not "link"SimpleITK::Show() with FIJI),但解决方案适用于 …

python unix ubuntu imagej simpleitk

5
推荐指数
1
解决办法
5414
查看次数