好久没做过dip了,而且之前实现所有的方法都是使用matlab这种无脑操作的库语言。因此一开始甚至忘了怎么读取图片。
从PIL到openCV,再到matplotlib。直到我知道了导入opencv是下面这样,而不是import opencv:
import cv2
总算事情才算开始了。
然后,好吧,openCV居然默认是BGR的顺序读取,百度一下才知道了转换方法:
im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
想到是做夜景的增强,自然想到了把RGB的值提上去,考虑到了对数函数和伽马函数。然后就选择了函数来变换:
s=c*r^y
果然是好久没做过数字图像处理了,虽然暗部有一定的提升,但是完全没考虑什么亮处的值,很多地方都直接炸了。效果图如下:
然后...我又试了一下对数变换:
r=8*log2(s+1)-1
感觉没有问题,把rgb的值提升,并且投影到0-255。直到...