您的位置:首页 > 编程语言 > MATLAB

用matlab检测斑马鱼重心

2015-07-01 17:36 405 查看
clc;

clear;

img1=imread('E:\matlab\zebrafish\zebrafish.jpg');

figure('name','显示原始图像');

imshow(img1);

img2 = rgb2gray(img1); %转换成灰度图像

figure('name','显示灰度图像');

imshow(img2);

%thresh = graythresh(img2); %获取转换成二值图像的阈值

img3 = im2bw(img2,0.64); %转换为二值图像,手动调整阈值,保证斑马鱼外轮廓比较准确

figure('name','显示二值图像');

imshow(img3);

img4 = bwareaopen(img3,4300); %删除二值图像img3中面积小于500的对象

figure('name','显示滤除内部噪声后的图像');

imshow(img4);

img5=1-img4;%图像反转

figure('name','显示反转后的图像');

imshow(img5);

img5 =bwareaopen(img5,53000); %去噪,阈值选取很大,其实是要去掉鱼身体外部的痕迹,只留下整个鱼身

figure('name','显示滤除外部噪声及重心标记后的图像');

imshow(img5);

hold on ; %维持图像,保证坐标能被标记在img5上

S=regionprops(img5,'Centroid'); %求出鱼身的重心坐标,坐标信息存在S.Centroid

plot(S.Centroid(1),S.Centroid(2),'+'); %用+标记重心点

result=sprintf(' (%.1f,%.1f)',S.Centroid);

text(S.Centroid(1),S.Centroid(2),result);%将坐标以文本的形式标记在img5上

hold off;

%求出鱼身体部分的像素个数

S=regionprops(img5,'Area');

a=S.Area;

%a=131686
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: