小编Ret*_*i43的帖子

TypeError:使用imshow()绘制数组时图像数据的维度无效

对于以下代码

# Numerical operation
SN_map_final = (new_SN_map - mean_SN) / sigma_SN  

# Plot figure
fig12 = plt.figure(12)
fig_SN_final = plt.imshow(SN_map_final, interpolation='nearest')
plt.colorbar()

fig12 = plt.savefig(outname12)
Run Code Online (Sandbox Code Playgroud)

new_SN_map作为一维数组,mean_SNsigma_SN为常数,我碰到下面的错误.

Traceback (most recent call last):
  File "c:\Users\Valentin\Desktop\Stage M2\density_map_simple.py", line 546, in <module>
    fig_SN_final = plt.imshow(SN_map_final, interpolation='nearest')
  File "c:\users\valentin\appdata\local\enthought\canopy\user\lib\site-packages\matplotlib\pyplot.py", line 3022, in imshow
    **kwargs)
  File "c:\users\valentin\appdata\local\enthought\canopy\user\lib\site-packages\matplotlib\__init__.py", line 1812, in inner
    return func(ax, *args, **kwargs)
  File "c:\users\valentin\appdata\local\enthought\canopy\user\lib\site-packages\matplotlib\axes\_axes.py", line 4947, in imshow
    im.set_data(X)
  File "c:\users\valentin\appdata\local\enthought\canopy\user\lib\site-packages\matplotlib\image.py", line 453, in set_data
    raise TypeError("Invalid …
Run Code Online (Sandbox Code Playgroud)

python arrays numpy matplotlib

27
推荐指数
1
解决办法
7万
查看次数

如何将DWT用于LSB替代隐写术

在隐写术中,最低有效位(LSB)替换方法将秘密位嵌入来自覆盖介质的位的位置,例如图像像素.在一些方法中,采用图像的离散小波变换(DWT)并且将秘密比特嵌入DWT系数中,之后使用逆变换来重建隐秘图像.

但是,DWT产生浮点系数,对于LSB替换方法,需要整数值.我读过的大多数论文都使用2D Haar Wavelet,但他们的方法并不清楚.我已经看到变换是根据低通和高通滤波器(浮点变换)定义的,或者是取对值的和与差,或者平均值和平均值之差等.

更明确地,无论是正向变换还是反向变换(但不一定取决于所使用的公式),最终将出现浮点数.我不能将它们用于系数,因为替换不起作用,我不能将它们用于重建的像素,因为图像需要整数值来存储.

例如,让我们考虑一对像素,AB作为一维数组.低频系数由和,即s = A + B高频系数和差值定义,即d = A - B.然后我们可以用B = (s - d) / 2和重建原始像素A = s - B.然而,在任何与系数混合的位之后,s - d可能不再是偶数,并且浮点值将出现用于重建的像素.

对于2D情况,1D变换分别应用于行和列,因此最终会在某处出现4除法.这可能导致具有浮动余数.00,.25,.50和.75的值.我只遇到过一篇解决这个问题的论文.其余的方法都很模糊,我很难复制它们.然而,DWT已经广泛用于图像隐写术.

我的问题是,既然我读过的一些文献没有启发,那怎么可能呢?如何使用引入浮点值的变换,但整个隐写方法需要整数?

steganography dwt haar-wavelet wavelet-transform

6
推荐指数
1
解决办法
1867
查看次数

在scipy为什么不idct(dct(a))等于a?

我正在尝试使用python实现JPEG压缩.当我尝试对tiff图像应用DCT,量化,IDCT过程时,我发现scipy.fftpack.dct/idct有些奇怪.

由于scipy包中只有1D dct/idct,所以我正在为2D dct做这个

import numpy as np
from scipy.fftpack import dct, idct

def dct2(block):
    return dct(dct(block.T).T)

def idct2(block):
    return idct(idct(block.T).T)
Run Code Online (Sandbox Code Playgroud)

我使用简单的3x3矩阵测试了2D dct/idct.我希望在这个测试用例中得到一个True矩阵.

a = np.random.randint(0,255,9).reshape(3,3)
print a == idct2(dct2(a))
Run Code Online (Sandbox Code Playgroud)

然而事实证明,在idct2(dct2(a))之后,结果通过与原始矩阵相比的常数因子来缩放.

我想问一下是否有办法实现一组2D dct/idct,这样在idct(dct(a))操作之后我可以获得与输入相同的输出.

python dct scipy

6
推荐指数
1
解决办法
3918
查看次数

图像类型int16到uint8的转换

我有一个数据类型的图像int16。因此,当我不得不将其范围转换为0-255时,我有两种方法可以在Python中实现。

1)numpy.uint8直接使用功能

2)cv2.normalize在0-255范围内使用OpenCV 功能,然后使用numpy.uint8

在Matlab中,我们直接使用uint8函数进行转换。在

同样在第二种情况下,我使用NORM_MINMAX并将强度值的范围更改为0-4

进行转换的正确方法是什么?

python matlab opencv numpy image-processing

2
推荐指数
1
解决办法
5790
查看次数

修改PNG文件的一个字节

对于我的研究项目,我需要修改 png 文件中的一些字节。

这是用于隐写术项目,我必须稍微修改一个字节并隐藏照片中的消息。

在下面的代码中,当我运行它时,它将每个字节都变为 0 并且文件被破坏。在 bmp 文件中它可以工作,但我不知道如何在 png 格式中做到这一点。

不幸的是我无法使用任何第三方库。我只需要帮助如何正确读取每个字节,然后使用 C++ 对其进行修改。感谢帮助。

string path = "C:\\Users\\sth....";
    fstream file(path, ios::binary | ios::in | ios::out);
    char buffer[1000];
    file.seekp(300);
    file << char(0);
    file.read(buffer, 1000);
    for(char c : buffer)
        cout << int(c) << " ";
Run Code Online (Sandbox Code Playgroud)

c++ png steganography

0
推荐指数
1
解决办法
733
查看次数

使用math.pow()的模运算的意外结果

我得到了错误的答案:

long(math.factorial(100)) % long(math.pow(12, 48))
Run Code Online (Sandbox Code Playgroud)

答案应为0,但Python给出:

3533293188234793495632656292699172292923858530336768L
Run Code Online (Sandbox Code Playgroud)
  • 为什么会这样?
  • 我该如何正确计算?

python

-2
推荐指数
1
解决办法
59
查看次数