我正在尝试使用像素的颜色在图像中的特定区域上拟合曲线。如图所示(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中做到这一点。除了处理所有的点之外还有其他更短的方法吗?
答案 0 :(得分:0)
答案 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');