步骤:
1:导入图片;
2:选择图片范围,输入x轴和y轴的坐标范围;
3:点击自动识别曲线;
4:输入点数,点击画图。
注:matlab使用matlab 2014b软件
演示效果:
核心程序:
Image_hsv = rgb2hsv(Image);
Image_target = 255*ones(size(Image));
Image_target_hsv = rgb2hsv(Image_target);
H = Image_hsv(:,:,1);
S = Image_hsv(:,:,2);
V = Image_hsv(:,:,3);
imshow(Image);
[y_target x_target] = ginput(1);
x_target = round(x_target);
y_target = round(y_target);
%close;
h_value=0.01;
s_value=0.01;
for f_value=-0.2:0.01:0.2
for v_value=0:0.1:1
[row, col] = ind2sub(size(Image_hsv),find(Image_hsv(:,:,1)>(H(x_target,y_target)-h_value) & Image_hsv(:,:,1)< (H(x_target,y_target)+h_value) & Image_hsv(:,:,2)>(S(x_target,y_target)-s_value) & Image_hsv(:,:,3)>(V(x_target,y_target)-v_value)));
threshold = graythresh(Image)+f_value;
Image_target = im2bw(Image,threshold);
if isempty(Image_target)
break;
end
end
if isempty(Image_target)
break;
end
end
if isempty(Image_target)
message('没有答案啊!');
end
for i = 1 : length(row)
Image_target_hsv(row(i),col(i),:) = Image_hsv(row(i),col(i),:);
end
Image_target = hsv2rgb(Image_target_hsv); % 将 HSV 图像的色调、饱和度和明度值转换为 RGB 图像的红色、绿色和蓝色值。
threshold = graythresh(Image_target)+f_value; %使用 graythresh 计算阈值。阈值归一化至范围 [0, 1]。
Image_target = im2bw(Image_target,threshold); %将灰度图像 I 转换为二值图像 BW,方法是将输入图像中亮度大于 level 的所有像素替换为值 1(白色),将所有其他像素替换为值 0(黑色)。
imshow(Image_target);
Image=Image_target;
备注:本文参考了“打浦程序员”的识别案例,谢谢
识别曲线