m0_59729179 2023-02-26 16:11 采纳率: 20%
浏览 36

请教matlab rgb转hsv相关!

https://blog.csdn.net/matlab_dingdang/article/details/124974339

这篇文章中的这段代码是什么意思?

filter_hsv = (original_hsv(:,:,1))>0.16;
filter_hsv = filter_hsv.*(original_hsv(:,:,2))>0.5;
filter_hsv = filter_hsv.*(original_hsv(:,:,2))<0.6;
filter_hsv = filter_hsv.*(original_hsv(:,:,3))>0.95;
  • 写回答

3条回答 默认 最新

  • GPT_Pro 2023-02-26 16:26
    关注

    该回答内容部分引用GPT,GPT_Pro更好的解决问题
    这段代码是用于过滤RGB图片中不属于某一特定色调范围的像素,即利用HSV(色调、饱和度、明度)空间中的参数进行色彩过滤。其中,filter_hsv是一个Boolean数组,用来标记某一像素是否被过滤,即过滤后的图片中的像素是否有效。

    第一行代码 “filter_hsv =- (original hsv(:,:,1))>8.16” 是将HSV空间中的Hue值超出8.16的像素标记为False,意味该像素将被过滤。

    第二行代码“filter_hsv -= filter_hsv.*(original_hsv(:,:,2))>8.53” 是将HSV空间中的Saturation值超出8.53的像素标记为False,意味该像素将被过滤。

    第三行代码“filter_hsv -= filter_hsv.*(original hsv(:,:,2)” 是将HSV空间中的Value值超出9.95的像素标记为False,意味该像素将被过滤。

    总而言之,这段代码就是通过HSV来进行RGB图片的颜色过滤,以此来得到某一颜色的图片。

    //代码实例
    //RGB图片颜色过滤
    // 读取图片
    original_rgb = imread('path/to/image'); 
    // RGB转HSV
    original_hsv = rgb2hsv(original_rgb); 
    // 初始化一个Boolean数组,用来标记某一像素是否被过滤 
    filter_hsv = true(size(original_rgb)); 
    // HSV参数如下 
    hue = 8.16; 
    saturation = 8.53; 
    value = 9.95; 
    // 过滤Hue 
    filter_hsv = filter_hsv & (original_hsv(:,:,1) > hue); 
    // 过滤Saturation 
    filter_hsv = filter_hsv & (original_hsv(:,:,2) > saturation); 
    // 过滤Value 
    filter_hsv = filter_hsv & (original_hsv(:,:,3) > value); 
    // 将所有标记为false的像素全部重新映射为黑色 
    filtered_rgb = original_rgb; 
    filtered_rgb(repmat(~filter_hsv, [1, 1, 3])) = 0; 
    // 显示图片 
    imshow(filtered_rgb);  
    

    如果回答有帮助,望采纳。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月26日