bwdist
计算每个点到最近边缘的距离,然后使用imdilate
将最大值(沿着线的中心)在线宽方向上平滑。然后可以选择线上的一个点来查看其近似直径(在直径转换处,例如连接处,会有些偏差)。以下是一个示例:img = imread('qGs5t.png'); % Load RGB image
bw = ~im2bw(img); % Convert to black and white and invert
bw = imclose(bw, strel('disk', 3)); % Morphological close to remove noise
distImage = bwdist(~bw); % Distance transform
maxDist = double(max(distImage(:))); % Find maximum distance measure
diamImage = 2.*bw.*imdilate(distImage, strel('disk', floor(maxDist))); % Dilate and mask
imagesc(diamImage); % Display image
colorbar; % Display color bar
dcmObj = datacursormode(gcf); % Create data cursor object...
set(dcmObj, 'Enable', 'on'); % ... and enable to select points
这是具有已选择点的图像(“索引”值是近似直径):