【发布时间】:2018-03-22 15:20:58
【问题描述】:
基本上我想实现 BSC。一张照片变成了比特,其中一些被改变了,一个新的图像被创建了。我遇到的问题是我得到了相同的图像。我已经放了一些 print() 语句来查看 error() 是否有效,并且看起来确实有效。这是我的代码:
import numpy as np
import random as rand
# Seed
rand.seed(4)
# Filenames
in_name = 'in_img.png'
out_name = 'out_img.png'
# Into bits
in_bytes = np.fromfile(in_name, dtype="uint8")
in_bits = np.unpackbits(in_bytes)
data = list(in_bits)
# BSC
def error(x):
p = 0.1
is_wrong = rand.random() < p
if is_wrong:
if x == 1:
return 0
else:
return 1
else:
return x
for i in data:
i = error(i)
# To PNG
out_bits = np.array(data)
out_bytes = np.packbits(out_bits)
out_bytes.tofile(out_name)
【问题讨论】: