Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 修改图像wrt的亮度值。门槛_Matlab_Image Processing - Fatal编程技术网

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=白色

  • 如果所选像素的亮度值高于阈值(例如thresh=0.5,像素亮度值=0.8),则会将其更改为较低的值(例如0.3),以便在对图像进行二值化时,该像素显示为黑色像素
  • 类似地,如果选定像素的亮度值低于阈值,则亮度会增加,使其变为白色
  • 我尝试了MATLAB的
    rgb2hsv()
    hsv2rgb()
    函数,将RGB图像转换为HSV,提取亮度通道,修改它,然后将图像更改回RGB。但结果不是我所需要的

    我需要的是:

  • 如果一个亮红色像素的亮度降低,它应该变成暗红色,因此它会上升为黑色
  • 如果白色像素的亮度降低,则应变为黑色
  • 如果黑色像素的亮度增加,则应变为白色
  • 我有以下问题:

  • 当我降低白色像素的亮度时,它会变成红色而不是黑色
  • 是否有可能在不修改HSV图像的任何其他通道(如色调/色度)的情况下实现上述目标
  • RGB和HSV之间的转换损耗是否较小
  • 实现这一目标的理想方式是什么
  • 那么

    您的第一个语句是相反的,因此如果同时应用,它们将反转图像。我猜你只是指出了你想采取的两种不同的行动

    关于你的问题:

    当我降低白色像素的亮度时,它会变为红色 黑色的

    这不可能发生。你在这里犯了一些错误。如果只修改亮度,则颜色不会改变(从白色变为红色)

    是否有可能在不进行修改的情况下实现上述目标 HSV图像的任何其他通道,如色调/色度

    这是唯一正确的方法。不要修改其他通道

    RGB和HSV之间的转换损耗是否较小

    这已经足够了。如果应用以下命令,结果将接近数值稳定性:

    im2 = hsv2rgb(rgb2hsv(im));
    im=im2double(im);
    sum(im2(:)-im(:))
    
    ans =
    
       6.9403e-14
    
    实现这一目标的理想方式是什么

    如果您没有任何具体的理由相信其他方法,那么这种方法已经足够好了

  • 你只是使用了错误的颜色空间。检查有关HSV和HSL的信息,尤其是右侧的对比图。当V=1时,可以得到任何“纯”颜色。当你谈论亮度时,你可能应该选择HSL的亮度通道。在matlab文件交换中可用

  • 参见1,使用HSL,然后必须更改L通道

  • 当您要更改为黑白时,可以在HSL图像中检测要修改的像素,并在RGB图像中设置像素。RGB、HSV和HSL的颜色空间匹配您只有精度错误。使用规格化颜色(0,1)和双值时,这些错误很小


  • 它不应该是
    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]
    内的亮度。我应该如何计算多重因素?