%% 工业视觉检测:多色工件轮廓提取与计数
clc; clear; close all;
% 图像读取与预处理
originalImg = imread('E:\111.jpg');
hsvImg = rgb2hsv(originalImg);
% 定义颜色阈值参数
colorParams = struct(...
'green', {[0.25 0.45], [0.3 1], [0.2 1]},... % 绿色范围
'red', {[0.95 1.00; 0.00 0.05], [0.3 1], [0.2 1]},... % 红色双区间
'blue', {[0.55 0.65], [0.3 1], [0.2 1]}... % 蓝色范围
);
% 创建复合掩膜
finalMask = false(size(hsvImg,1), size(hsvImg,2));
se = strel('disk',5);
colors = fieldnames(colorParams);
for i = 1:length(colors)
% 提取当前颜色参数
[hueRange, satRange, valRange] = colorParams.(colors{i}){:};
% 生成颜色掩膜
if size(hueRange,1) > 1 % 红色双区间处理
colorMask = ( (hsvImg(:,:,1) >= hueRange(1,1) & hsvImg(:,:,1) <= hueRange(1,2)) |...
(hsvImg(:,:,1) >= hueRange(2,1) & hsvImg(:,:,1) <= hueRange(2,2)) );
else
colorMask = (hsvImg(:,:,1) >= hueRange(1) & hsvImg(:,:,1) <= hueRange(2));
end
% 应用饱和度与明度阈值
colorMask = colorMask &...
(hsvImg(:,:,2)
最新发布