我有一张蛇的形象。当然,蛇是弯曲的,所以我想从图像中提取蛇。
背景全黑,所以我认为这应该是相对直接的。我现在的尝试并不够接近。我希望能够在曲线周围追踪,而不仅仅是在蛇周围扔一个任意的盒子。这可能吗?
这就是我所拥有的:
bw = im2bw(test, graythresh(test));
[row, col] = find(bw);
topLeftRow = min(row);
topLeftCol = min(col);
bottomRightRow = max(row);
bottomRightCol = max(col);
maskedImage = bsxfun(@times, test, cast(bw, class(test)));
extractedSnake = maskedImage(topLeftRow:bottomRightRow, topLeftCol:bottomRightCol, :);
[![enter image description here][1]][1]
答案 0 :(得分:2)
您可以简单地检测边缘并扩大图像。可以调整参数以获得最佳结果。
im = rgb2gray(imread('blkil.jpg'));
figure,
subplot(1,4,1)
imshow(im)
title('Original')
% Detect edges
subplot(1,4,2)
BW1 = edge(im,'Canny');
imshow(BW1)
title('Edges')
% Dilate
subplot(1,4,3)
se = strel('disk',12);
BW2 = imdilate(BW1,se);
imshow(BW2)
title('Dilated')
% Detect resulting edges
subplot(1,4,4)
BW3 = edge(BW2,'Canny');
imshow(BW3)
title('Result shape')