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,并在“色调/饱和度”面板中调整图像,即可确认这一点。