如何正确标记图像中检测到的对象?
How to correct labeling the detected objects in in a image?
我正在尝试确定和计算图像中的 WBC 数量,我可以使用以下代码确定它。但是当我尝试标记检测到的 WBC 时出现,它标记的是圆圈外的数字。结果附在下面。
你能告诉我这里缺少什么吗?
clc;
clear all;
close all;
rgb = imread('test.jpg');
figure;
imshow(rgb);
binaryImage=im2bw(rgb);
bw = im2bw(rgb, graythresh(rgb));
imshow(bw)
L = bwlabel(bw);
imshow(rgb) hold on
[centers, radii, metric] = imfindcircles(rgb,[9 24],'ObjectPolarity','dark','Sensitivity',0.86,'Method','twostage');
m = viscircles(centers,radii);
[a,b]=size(centers);
disp(a);
disp(b);
s = regionprops(L, 'Centroid');
for k = 1:numel(s)
c = s(k).Centroid;
text(c(1), c(2), sprintf('%d', k), ...
'Color', 'w', ...
'HorizontalAlignment', 'center', ...
'VerticalAlignment', 'middle');
end
hold off
你有点糊涂了
你的方法是:
1) 计算圆并绘制它们
2) 用完全不同的方法计算圆,并在其中放置标签
使用第一种方法的结果来编写标签是否有意义?你有一行代码说:
[centers, radii, metric] = imfindcircles(rgb,[9 24],'ObjectPolarity','dark','Sensitivity',0.86,'Method','twostage');
请注意,那里写的第一件事是 centers
,这暗示这是一个很好用的好东西,情节中心!
只需删除所有二进制图像内容并写入:
clc;
clear all;
close all;
rgb = imread('https://i.stack.imgur.com/WXpjH.jpg');
figure;
imshow(rgb); hold on
[centers, radii, metric] = imfindcircles(rgb,[9 24],'ObjectPolarity','dark','Sensitivity',0.86,'Method','twostage');
m = viscircles(centers,radii);
[a,b]=size(centers);
disp(a);
disp(b);
% s = regionprops(L, 'Centroid');
for k = 1:size(centers,1)
c = centers(k,:);
text(c(1), c(2), sprintf('%d', k), ...
'Color', 'w', ...
'HorizontalAlignment', 'center', ...
'VerticalAlignment', 'middle');
end
hold off
我正在尝试确定和计算图像中的 WBC 数量,我可以使用以下代码确定它。但是当我尝试标记检测到的 WBC 时出现,它标记的是圆圈外的数字。结果附在下面。
你能告诉我这里缺少什么吗?
clc;
clear all;
close all;
rgb = imread('test.jpg');
figure;
imshow(rgb);
binaryImage=im2bw(rgb);
bw = im2bw(rgb, graythresh(rgb));
imshow(bw)
L = bwlabel(bw);
imshow(rgb) hold on
[centers, radii, metric] = imfindcircles(rgb,[9 24],'ObjectPolarity','dark','Sensitivity',0.86,'Method','twostage');
m = viscircles(centers,radii);
[a,b]=size(centers);
disp(a);
disp(b);
s = regionprops(L, 'Centroid');
for k = 1:numel(s)
c = s(k).Centroid;
text(c(1), c(2), sprintf('%d', k), ...
'Color', 'w', ...
'HorizontalAlignment', 'center', ...
'VerticalAlignment', 'middle');
end
hold off
你有点糊涂了
你的方法是:
1) 计算圆并绘制它们
2) 用完全不同的方法计算圆,并在其中放置标签
使用第一种方法的结果来编写标签是否有意义?你有一行代码说:
[centers, radii, metric] = imfindcircles(rgb,[9 24],'ObjectPolarity','dark','Sensitivity',0.86,'Method','twostage');
请注意,那里写的第一件事是 centers
,这暗示这是一个很好用的好东西,情节中心!
只需删除所有二进制图像内容并写入:
clc;
clear all;
close all;
rgb = imread('https://i.stack.imgur.com/WXpjH.jpg');
figure;
imshow(rgb); hold on
[centers, radii, metric] = imfindcircles(rgb,[9 24],'ObjectPolarity','dark','Sensitivity',0.86,'Method','twostage');
m = viscircles(centers,radii);
[a,b]=size(centers);
disp(a);
disp(b);
% s = regionprops(L, 'Centroid');
for k = 1:size(centers,1)
c = centers(k,:);
text(c(1), c(2), sprintf('%d', k), ...
'Color', 'w', ...
'HorizontalAlignment', 'center', ...
'VerticalAlignment', 'middle');
end
hold off