matlab 识别曲线

步骤:

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;

备注:本文参考了“打浦程序员”的识别案例,谢谢

识别曲线

你可能感兴趣的:(matlab,matlab)