首页 > 解决方案 > dwt2 matlab函数在python pywt.dwt2函数中的结果不一样

问题描述

我正在研究一个脑肿瘤分类项目,它最初是在 matlab 中制作的,我正在尝试在 python 中实现它,我面临着在 python 中重新实现 2D 小波变换部分的问题。

这是matlab中的实现:-

img = imread('1Perfect.jpg');
img = imresize(img,[200,200]);
thr = im2bw(img);
signal1 = thr(:,:);

[cA1,cH1,cV1,cD1] = dwt2(signal1,'db4');
[cA2,cH2,cV2,cD2] = dwt2(cA1,'db4');
[cA3,cH3,cV3,cD3] = dwt2(cA2,'db4');
DWT_feat = [cA3,cH3,cV3,cD3];

imshow(imresize(DWT_feat,[110,450]));

这导致了这个: -

在此处输入图像描述

现在这是我的 python 实现:-

img = cv2.imread("1Perfect.jpg")
img = cv2.resize(img, dsize=(200, 200), interpolation=cv2.INTER_CUBIC)
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
(thresh, result) = cv2.threshold(gray, 127.5, 255, cv2.THRESH_BINARY)

cA1, (cH1, cV1, cD1) = pywt.dwt2(result[:, :], 'db4')
cA2, (cH2, cV2, cD2) = pywt.dwt2(cA1, 'db4')
cA3, (cH3, cV3, cD3) = pywt.dwt2(cA2, 'db4')
DWT_feat = np.concatenate((cA3, cH3, cV3, cD3), axis=1)

cv2.imshow("frame", cv2.resize(feats, dsize=(450, 110), interpolation=cv2.INTER_CUBIC))
cv2.waitKey(0)

这是结果:-

在此处输入图像描述

那么我在这里缺少什么?

标签: pythonmatlabimage-processingwavelet-transform

解决方案


推荐阅读