一、简介
基于matlab的鱼苗计数识别,鱼苗计数是水产养殖和水生生态研究中的关键任务,它有助于评估鱼苗的生长状况、预测未来的产量以及研究鱼类的生态行为。传统的鱼苗计数方法通常是手工进行,这种方法耗时、易出错,而且不适合大规模计数。随着计算机视觉和图像处理技术的发展,利用Matlab等数学软件进行鱼苗计数已经成为一种高效、准确的方法。
二、部分源码
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
tic
global I
axes(handles.axes1)
imshow(I);%原图
Ig = rgb2gray(I);
axes(handles.axes2)
imshow(Ig);
bw_rgb = im2bw(rgb2gray(I),0.21);%rgb图像灰度转换,二值化
axes(handles.axes3)
imshow(bw_rgb);%灰度图
pr = I(:,:,1);
pg = I(:,:,2);
pb = I(:,:,3);
Y = 0.299*pr + 0.587*pg + 0.114*pb;
U = -0.147*pr - 0.289 *pg+ 0.436*pb;%蓝色偏移量
V = 0.615*pr - 0.515*pg- 0.100*pb; %红色偏移量
YUV= cat(3,Y,U,V); %% cat函数就是把三个空间组合在一起,合并得到YUV彩色空间图像
axes(handles.axes4)
imshow(YUV);
pr = I(:,:,1);
pg = I(:,:,2);
pb = I(:,:,3);
V = 0.615*pr - 0.515*pg- 0.100*pb; %红色偏移量
bw_yuv=im2bw(YUV(:,:,3),0.1);%提取yuv中的v分量,进行二值化
axes(handles.axes5)
imshow(bw_yuv);
BW = edge(bw_yuv,'canny');
axes(handles.axes6)
imshow(BW);%显示yuv+canny的图像
SE=strel('diamond',9);
A1=imdilate(BW,SE);
axes(handles.axes7)
imshow(A1);
[L,m]=bwlabel(A1);%初步取得个数
status=regionprops (L,'BoundingBox');
centroid = regionprops(L,'Centroid' );
imshow(A1);hold on;
三、运行结果
四、matlab版本
MATLAB R2019a
五、学习与交流
文中不足之处请大家多多指教,学习与交流可以联系企鹅:3752243968
文中部分源码仅供参考,若需要全部代码可以私