Matlab 色相滤色片

Matlab 色相滤色片,matlab,colors,color-space,hsv,Matlab,Colors,Color Space,Hsv,为什么下面的滤色片找不到青椒 守则: function [ outhsv ] = ColorFilter( hsv, h, s ) %COLORFILTER Summary of this function goes here % Detailed explanation goes here if nargin < 2 h = []; end if nargin < 3 s = []; end if si

为什么下面的滤色片找不到青椒

守则:

function [ outhsv ] = ColorFilter( hsv, h, s )
%COLORFILTER Summary of this function goes here
%   Detailed explanation goes here

    if nargin < 2
        h = [];
    end
    if nargin < 3
        s = [];
    end

    if size(h,2)==1
        h = padarray(h, [0 1], 1/100, 'post');
    end

    if size(s,2)==1
        s = padarray(s, [0 1], 1/100, 'post');
    end

    if isempty(h)
        v_of_h = ones(size(hsv,1), size(hsv,2));
    else
        v_of_h = WeightFunction( hsv(:,:,1), h(:,1), h(:,2));
    end

    if isempty(s)
        v_of_s = ones(size(hsv,1), size(hsv,2));
    else
        v_of_s = WeightFunctionOnce( hsv(:,:,2), s(:,1), s(:,2));
    end

    outhsv = hsv;
    outhsv(:,:,3) = hsv(:,:,3) .* v_of_h .* v_of_s;



function y = WeightFunction( x, mu, sigma ) 

    %y = WeightFunctionOnce(x,mu,sigma) + WeightFunctionOnce(x-1,mu,sigma);
    y = 1 - (1-WeightFunctionOnce(x,mu,sigma)) .* (1-WeightFunctionOnce(x-1,mu,sigma));

function y = WeightFunctionOnce( x, mu, sigma ) 

    if nargin<2
        mu=0;
    elseif nargin<3
        sigma=1./100.;
    end


    if any(size(mu) ~= size(sigma))
        error('mu and sigma should be of the same size');
    end

    y = zeros([size(x) numel(mu)]);

    for i=1:numel(mu)
        y(:,:,i) = exp(-((x - mu(i)) .^ 2 ./ (2 .* sigma(i) .^ 2)));
    end

    %y = sum(y,3)/size(y,3);
    y = 1-prod(1-y,3);
函数[outhsv]=颜色过滤器(hsv,h,s)
%此函数的COLORFILTER摘要如下
%这里有详细的解释
如果nargin<2
h=[];
终止
如果nargin<3
s=[];
终止
如果尺寸(h,2)=1
h=焊盘阵列(h,[01],1/100,'post');
终止
如果大小(s,2)=1
s=焊盘阵列(s,[01],1/100,'post');
终止
如果是空的(h)
v_of_h=一(尺寸(hsv,1),尺寸(hsv,2));
其他的
v_of_h=权重函数(hsv(:,:,1),h(:,1),h(:,2));
终止
如属空
v_of_s=一(大小(hsv,1),大小(hsv,2));
其他的
v_of_s=权重函数一次(hsv(:,:,2),s(:,1),s(:,2));
终止
outhsv=hsv;
outhsv(:,:,3)=hsv(:,:,3)。*v_of h.*v_of s;
函数y=权重函数(x,mu,sigma)
%y=权重函数一次(x,mu,sigma)+权重函数一次(x-1,mu,sigma);
y=1-(1-WeightFunctionOnce(x,mu,sigma)).*(1-WeightFunctionOnce(x-1,mu,sigma));
函数y=权重函数一次(x,mu,sigma)

如果nargin如果你仔细观察H值,那些青椒是淡黄色的,所以你可能想扩大一点规则

我建议在0.15和0.5之间。你也可以结合饱和通道,只考虑有活力的图像的一部分,即,我们想摆脱洋葱。请尝试以下代码以获得预览

hsv_dat = rgb2hsv(imread('peppers.png'));
imagesc(hsv_dat(:,:,1) > 0.15 & hsv_dat(:,:,1) < 0.5 & hsv_dat(:,:,2) > 0.3)
colormap(gray)
hsv_dat=rgb2hsv(imread('peppers.png');
图像C(hsv_数据(:,:,1)>0.15和hsv_数据(:,:,1)<0.5和hsv_数据(:,:,2)>0.3)
彩色地图(灰色)
你应该


如果你仔细观察H值,那些青椒是淡黄色的,所以你可能想扩大一点规则

我建议在0.15和0.5之间。你也可以结合饱和通道,只考虑有活力的图像的一部分,即,我们想摆脱洋葱。请尝试以下代码以获得预览

hsv_dat = rgb2hsv(imread('peppers.png'));
imagesc(hsv_dat(:,:,1) > 0.15 & hsv_dat(:,:,1) < 0.5 & hsv_dat(:,:,2) > 0.3)
colormap(gray)
hsv_dat=rgb2hsv(imread('peppers.png');
图像C(hsv_数据(:,:,1)>0.15和hsv_数据(:,:,1)<0.5和hsv_数据(:,:,2)>0.3)
彩色地图(灰色)
你应该


我不是图像处理专家,但在我的摄影师眼中,这些辣椒有很多黄色,几乎没有纯绿色。将peppers.png图像放入Photoshop并在色调/饱和度面板中调整图像可以证实这一点。我不是图像处理专家,但在我的摄影师眼中,这些辣椒有很多黄色,几乎没有纯绿色。将peppers.png图像放入Photoshop,并在“色调/饱和度”面板中调整图像,即可确认这一点。