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确定污染源位置,确定污染源的
- 下一篇: websocket python爬虫_p