如何解决我用 OpenCV 进行氡变换有什么问题
出于某种原因,我必须在 python 中使用 OpenCV 实现氡变换。我写的代码如下:
def compute_projections_cv(img,thetas):
h,w = img.shape[:2]
pad = int(np.ceil(((h**2 + w**2)**0.5 - h) / 2))
img = np.pad(img,[pad,pad])
hn,wn = h+pad*2,w+pad*2
m = len(thetas)
img_project = np.zeros((w,m),dtype=np.float32)
cx,cy = (wn + 1) / 2.0,(hn + 1) / 2.0
for i,t in enumerate(thetas):
mat = cv2.getRotationMatrix2D((cx,cy),t / np.pi * 180.0,1)
imgRot = cv2.warpAffine(img,mat,(hn,wn))
img_project[:,m - i - 1] = imgRot.sum(axis=0)[pad+h:pad:-1]
return img_project
2.我通过 skimage.transform.radon
和 compute_projections_cv
进行氡转换:
n_prjs = 128
thetas_dg = np.linspace(0,180,n_prjs + 1)[:-1]
thetas_rd = np.linspace(0,np.pi,n_prjs + 1)[:-1]
prjs_ski = radon(img,thetas_dg)
prjs_cv = compute_projections_cv(img,thetas_rd)
我们可以看到结果是合理的。
3.我使用 skimage.transform.iradon
进行逆氡变换,结果很糟糕。
img_ski = iradon(prjs_ski,thetas_dg)
img_cv = iradon(prjs_cv,thetas_dg)
怎么了?造成这种差异的原因是什么?谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。