matlab0-255的颜色映射到0-1,python中的matlab颜色映射
我想(?)您需要的是一个Colour Mapping函数,如:def create_colourmap(colour, grey):
c_map = numpy.zeros((256,4), dtype=numpy.float64)
for i in range(colour.shape[0]):
for j in range(colour.shape[1]):
tone = grey[i,j]
c_map[tone,3] +=1
count = c_map[tone, 3]
c_map[tone,:3] = (c_map[tone,:3] * (count-1) + colour[i,j])/count
return c_map.astype(numpy.uint8)[:,:3]
这将为每个灰度值(或色调)提供一个颜色值。在
您的“位反转”过程可以通过另一个函数简化:
^{pr2}$
把你的函数放在一起就是加密:def encrypt(infile, outfile):
with Image.open(infile, 'r') as colour_img:
colour_arr = numpy.array(colour_img)
grey_img = colour_img.convert('L')
grey_arr = numpy.array(grey_img)
c_map = create_colourmap(colour_arr, grey_arr)
with Image.fromarray(c_map) as cmap_img:
cmap_img.save(outfile[:-4]+'_cmap.bmp')
grey_arr = reverse_bits(grey_arr)
with Image.fromarray(grey_arr) as c:
c.save(outfile)
print("Encryption DONE")
你的解密功能:def decrypt(infile, outfile):
with Image.open(infile, 'r') as x:
y = numpy.array(x)
y = reverse_bits(y)
colour_arr = numpy.zeros((y.shape[0], y.shape[1], 3), dtype=numpy.uint8)
with Image.open(infile[:-4]+'_cmap.bmp') as cmap_img:
cmap = numpy.array(cmap_img)
for i in range(256):
colour_arr[y==i] = cmap[i]
with Image.fromarray(colour_arr) as c:
c.save(outfile)
print("Decryption DONE")
您会注意到颜色映射不会完全恢复图像的颜色,但会给图像一些色调。我不知道你的作业是关于什么的,但是你可以把彩色地图和加密图像一起发送,或者给他们另一张颜色相似的图片。在
我希望这对你有帮助,但是你需要了解它是如何工作的,并在必要的地方发表评论来解释到底发生了什么。在
祝你好运!在
《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读总结
以上是生活随笔为你收集整理的matlab0-255的颜色映射到0-1,python中的matlab颜色映射的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: matlab确定污染源位置,确定污染源的
- 下一篇: python取百位数个位数_使用Pyth