用matlab实现,如何对一幅图片不同像素点进行多条曲线拟合?相同的像素点用一条曲线拟合。如图。其中不同颜色代表不同像素点。把它拟合成图二所示的。图二
求代码实现。
从算法方面,构造一个价值函数,然后使用聚类算法找到相同的一类点,得到点的位置信息后使用回归算法,拟合出样条曲线。
close all;clear;clc;
I = imread('D:\11.jpg');
II = im2bw(I,L); %L楼主自己调一下
[I_h,I_w] = size(II);
%% 选择颜色
level = 40;
col = [29 107 31]; %col是所要搜索的像素点的颜色,RGB坐标
%% 搜集数据
k = 1;
cut = zeros(I_h,I_w,3);
for t1 = I_w: -1 :1
for t2 = I_h: -1 :1
if III(t2,t1) == 0
I(t2,t1,:) = [0 0 0]; %去坐标
end
xz1 = abs(I(t2,t1,1) - col(1));
xz2 = abs(I(t2,t1,2) - col(2));
xz3 = abs(I(t2,t1,3) - col(3));
if (I(t2,t1) > 0) && (xz1 < level) && (xz2 < level) && (xz3 < level) %&& (xz1 > 0) && (xz2 > 0) && (xz3 > 0)
x(k) = t1; %x,y对应col的像素点的坐标
y(k) = t2;
k = k + 1;
end
end
end
% 然后用找到的坐标拟合即可
if III(t2,t1) == 0
I(t2,t1,:) = [0 0 0]; %去坐标
end
这三行删掉没用