from skimageimport io, transform, img_as_float #img_as_float将图像转化为0-1的浮点数import numpyas np defint_to_float(f): image = io.imread(f)#读取图像为整型, [0-255] image = img_as_float(image)#变为浮点型[0-1]。 image = (image - image.min()) * (1 / (image.max() - image.min()))#比例缩放的归一化 image = transform.resize(image, (256,256))#图像缩放大小return image path ='/home/total_train_image_gray/*.jpg'#读取文件夹下所有的.jpg图像 collections = io.ImageCollection(path, load_func=int_to_float) #ImageCollection 读取整个文件夹的图像,对其进行int_to_float函数变换。这个函数特别神奇,省时间。 path1 ='/home/train_image_gray_0_1/'for iin range(len(collections)): io.imsave(path1+np.str(i)+'.jpg', collections[i])#重新存储
最常用的是借助对数形式对动态范围进行调整: 其中, S表示当前像素的灰度,t为转换后该像素的灰度。 例:将[0,255]的灰度压缩到[0,150] 则原图:结果图:
最常用的是借助对数形式对动态范围进行调整:
其中,
S表示当前像素的灰度,t为转换后该像素的灰度。
例:将[0,255]的灰度压缩到[0,150]
则
原图:
结果图:
1、imadjust函数的注意事项 关于imadjust函数的使用方法,最常见的一种用法: ...2、如何将灰度图像0到255的范围转化到0到1的范围? 我在读入文件后,分别采用了两种方法进行灰度转换,得到了data和data2两个数据,
1、imadjust函数的注意事项
关于imadjust函数的使用方法,最常见的一种用法:
但如果用这个函数变换图像的灰度范围时,需要注意:[low_in high_in],[low_out,high_out]的两个区间的范围必须在0到1之间。
对于满足以上要求的图像,可以通过max,min命令找到图像的灰度范围。
我企图将0到255转换到0到1,发现该函数不行。
2、如何将灰度图像0到255的范围转化到0到1的范围?
我在读入文件后,分别采用了两种方法进行灰度转换,得到了data和data2两个数据,一个使用了mat2gray函数,一个直接除以了255,发现两个结果相同。
因此以上两个方法均可,对于直接除以255这个方法跟我图像灰度范围在0到255密切相关。
mat2gary将值限定在[0,1]范围内,使用im2uint8将值限定在[0,255]范围内,把图像转换为uint8类。
关于matlab灰度变换可以参考网站:
(1)https://blog.csdn.net/seven233/article/details/105248603
将灰度图像变换到0-1的灰度范围的参考网站还有:
(2)https://blog.csdn.net/Jingnian_destiny/article/details/82215934
看到这个公式**:(I-min(I(: )))/(max(I(: ))-min(I(: )))**能把I归一化到[0,1],乘以255就得到0~255的范围,关于这个方法也试验成功,和上面得到的结果一致。
又偶然看到一篇文章,https://blog.csdn.net/qq_42138454/article/details/101073339
里面提及,im2double函数也可以进行归一化处理,
将灰度图像im2double后,得到的变量再乘以255,就又返回了灰度图像的值
对于该方法我也进行了实验,结果发现灰度值没有发生改变,可能是因为我本身读取到的图像已经是double型,该函数不起作用。
若读取到的图像是uint8型,可能经过该函数处理,也可达到灰度变换的效果,此处不再尝试。