Matlab 修改图像wrt的亮度值。门槛
我想修改彩色图像像素的亮度值。修改规则如下:Matlab 修改图像wrt的亮度值。门槛,matlab,image-processing,Matlab,Image Processing,我想修改彩色图像像素的亮度值。修改规则如下: 假设:亮度值在[0,1]中标准化,1=白色 如果所选像素的亮度值高于阈值(例如thresh=0.5,像素亮度值=0.8),则会将其更改为较低的值(例如0.3),以便在对图像进行二值化时,该像素显示为黑色像素 类似地,如果选定像素的亮度值低于阈值,则亮度会增加,使其变为白色 我尝试了MATLAB的rgb2hsv()和hsv2rgb()函数,将RGB图像转换为HSV,提取亮度通道,修改它,然后将图像更改回RGB。但结果不是我所需要的 我需要的是: 如果一
假设:亮度值在[0,1]中标准化,1=白色
rgb2hsv()
和hsv2rgb()
函数,将RGB图像转换为HSV,提取亮度通道,修改它,然后将图像更改回RGB。但结果不是我所需要的
我需要的是:
im2 = hsv2rgb(rgb2hsv(im));
im=im2double(im);
sum(im2(:)-im(:))
ans =
6.9403e-14
实现这一目标的理想方式是什么
如果您没有任何具体的理由相信其他方法,那么这种方法已经足够好了
它不应该是
sum(im2(:)-im(:)
而不是im4
?我使用这个函数来完成任务,但是它非常有损(sum(im2(:)-im(:)=0.1598
)。我的形象被扭曲了。有什么资源可以用来编写更高效的颜色空间转换方法吗?我无法重现上面的错误1e-4
。您能提供一个示例图像吗?出于某种原因,两个函数hsl2rgb
和rgb2hsl
都对最后一行中的值进行四舍五入。删除这两行,则在1e-15
Yes下面得到一个绝对误差,删除舍入语句将我的误差减少到1e-12
。应该足够好了。如果不转换为HSL,是否只能在RGB颜色空间中执行此操作Y=0.3R+0.5G+0.12B
提供亮度,但如何修改单个RGB组件以改变亮度?与前面提到的数字>1
和<1
相乘并不能完全满足我的要求,因为我的理论模型处理范围[0,1]
内的亮度。我应该如何计算多重因素?