在Matlab中将曲线拟合到具有特定颜色的区域

时间:2014-01-10 01:48:07

标签: matlab image-processing curve-fitting

我正在尝试使用像素的颜色在图像中的特定区域上拟合曲线。如图所示(https://db.tt/PcxHGbT3),图像中有一个灰色的区域可以使用Matlab中的图像处理进行检测。一旦我在Matlab中使用以下代码找到了像素的位置:

im = imread('layer.jpg');
figure,imshow(im);title('Original Image');
[y,x] = find(all(im<100, 3));

我需要找到位于图像中显示的区域中心线上的点的位置(https://db.tt/PcxHGbT3)。我想以某种方式拟合曲线,但我不知道如何在Matlab中做到这一点。除了处理所有的点之外还有其他更短的方法吗?

2 个答案:

答案 0 :(得分:0)

您可以使用im2bw(im,100/256)来限制图像,bwmorph(BW,'thin',INF)可以缩小搜索结果吗?

答案 1 :(得分:0)

您可以使用matlab二进制图像操作来获取具有灰色区域的点的质心。拥有质心,你可以用它们做任何事情,例如:装修线。这是一个基于您的图像的示例,如何做到这一点。

% convert rgb to gray scale
im = rgb2gray(imread('layer.jpg'));

% mask of gray-color with points
bwMask1 = im < 100; 

% mask with points only
bwMask2 = im < 20;  

% remove points outside gray area
bwMask3 = bwareaopen(bwMask1, 400);

% points only withing gray ![enter image description here][1]area
bwMask4 = bwMask2 & ~(bwMask3 - bwMask2);

% label all points
[L] = bwlabel(bwMask4, 8);

% calculate points parameters
pointStats = regionprops(L);

% get centroids of each point
pointCentroidsCell = {pointStats(:).Centroid};
pointCentroidsMat  = vertcat(pointCentroidsCell{:});


%plot results:
RGB = label2rgb(L); 
figure, imshow(RGB); title('labeled points');
![enter image description here][2]
figure,imshow(im); hold on;
plot(pointCentroidsMat(:, 1), pointCentroidsMat(:, 2), 'r*');
title('Found centroinds');

enter image description here enter image description here