Image 如何检测泡罩包装中的缺陷/缺失药片?(Matlab)

Image 如何检测泡罩包装中的缺陷/缺失药片?(Matlab),image,matlab,image-processing,Image,Matlab,Image Processing,如何检测片剂条中的缺陷/缺失片剂。假设平板电脑条中缺少一个平板电脑。我尝试了stdfilt(),但图像中含有大量噪声。我还尝试了平均值和中值滤波,如canny和prewitt。我还向图像中添加了诸如盐和纸之类的噪声。 还有其他的分割方法吗?任何编码都会有帮助 I2=rgb2gray(I); J = imnoise(I2,'salt & pepper',0.02); figure imshow(J) Kaverage = filter2(fspecial('average',3),J)/2

如何检测片剂条中的缺陷/缺失片剂。假设平板电脑条中缺少一个平板电脑。我尝试了
stdfilt()
,但图像中含有大量噪声。我还尝试了平均值和中值滤波,如canny和prewitt。我还向图像中添加了诸如盐和纸之类的噪声。 还有其他的分割方法吗?任何编码都会有帮助

I2=rgb2gray(I);
J = imnoise(I2,'salt & pepper',0.02);
figure
imshow(J)
Kaverage = filter2(fspecial('average',3),J)/255;
figure
imshow(Kaverage)
Kmedian = medfilt2(J);
imshowpair(Kaverage,Kmedian,'montage')
BW1 = edge(Kmedian,'Canny');
BW2 = edge(Kmedian,'Prewitt');`


这是一个基于我的评论的方法

% reduce to grayscale
d=rgb2gray(your_img);

% find edge and blur a bit so we can find circles
d2=conv2(edge(d),ones(9),'same');
d2=max(d2(:))-d2;

% find circles
Rmin = 71; Rmax = 80;
[center, radius] = imfindcircles(d2,[Rmin Rmax],'Sensitivity',0.98);

% Display what we found  
imagesc(d);axis square
hold on;
viscircles(center,radius);
plot(center(:,1),center(:,2),'yx','LineWidth',2);
hold off;

%每个圆圈内容的直方图:
[x,y]=meshgrid(1:size(d,2),1:size(d,1));
对于n=1:numel(半径)

圆{n}=find((x-中心(n,1))。^2+(y-中心(n,2))。^2这是一种基于我的评论的方法

% reduce to grayscale
d=rgb2gray(your_img);

% find edge and blur a bit so we can find circles
d2=conv2(edge(d),ones(9),'same');
d2=max(d2(:))-d2;

% find circles
Rmin = 71; Rmax = 80;
[center, radius] = imfindcircles(d2,[Rmin Rmax],'Sensitivity',0.98);

% Display what we found  
imagesc(d);axis square
hold on;
viscircles(center,radius);
plot(center(:,1),center(:,2),'yx','LineWidth',2);
hold off;

%每个圆圈内容的直方图:
[x,y]=meshgrid(1:size(d,2),1:size(d,1));
对于n=1:numel(半径)

圆_像素{n}=查找((x-中心(n,1))。^2+(y-中心(n,2)).^2我会检测圆圈以指定药片的位置,查看每个位置的强度直方图,并查看缺失药片的暗新月部分。基于此,如果有或没有药片,我会使用阈值。我会检测圆圈以指定药片的位置,查看每个loca的强度直方图然后看看丢失的药片在暗新月的哪一部分。基于这一点,如果有或没有药片,我会使用一个阈值。