• 通过matlab实现水产养殖鱼类成熟度自动分析系统


    欢迎订阅《FPGA学习入门100例教程》、《MATLAB学习入门100例教程

    目录

    一、理论基础

    二、核心程序

    三、测试结果


    一、理论基础

            实现水产养殖鱼类成熟度自动分析系统需要综合多个技术领域,包括图像处理、机器学习、生物学和数学。

    基本原理:

    1. 图像采集:首先,需要采集鱼类的图像数据。这可以通过水下摄像头或者机器人完成。图像需要包含足够的信息来判断鱼类的成熟度,如鱼的长度、宽度、颜色、纹理等。
    2. 图像处理:采集到的图像需要进行预处理,包括去噪、增强对比度、分割等步骤,以提高后续分析的准确性。
    3. 特征提取:从预处理后的图像中提取与鱼类成熟度相关的特征。这可能包括鱼的长度、宽度、颜色、纹理等。这些特征可以通过各种图像处理方法获得,如边缘检测、色彩分析、纹理分析等。
    4. 模型训练:使用机器学习算法训练一个模型,该模型能够根据提取的特征自动判断鱼类的成熟度。训练数据需要包含已知成熟度的鱼类图像。
    5. 成熟度分析:利用训练好的模型对新的鱼类图像进行成熟度分析。

            需要注意的是,实现水产养殖鱼类成熟度自动分析系统需要多学科的知识和技术支持,包括图像处理、机器学习、生物学和数学等。此外,还需要有足够的鱼类图像数据来训练模型,并且需要对模型进行验证和优化以提高准确性。


    算法分为2个部分:

    第一部分是鱼提取:

            首先更加像素判断,将鱼的背景因素去除,这个主要是像素判断,包括背景中的白色背景以及蓝色字体背景。

           这些背景去除之后,将得到一个鱼的大致轮廓。

           然后将提取的鱼进行颜色分解,即RGB转换为HSV,然后使用S通道,进行二值化处理,即,即im2bw这个函数,二值化处理之后,去掉图像中的小的噪声,即bwareaopen这个函数,

    然后进行填充处理,即将鱼区域中的小的空洞区域进行填充,

          最后,通过腐蚀操作,将鱼边缘部分一些不平稳的消除。实现鱼的抠图操作。

         对鱼边缘提取和记录计算:

         通过edge这个函数,进行sobel边缘提取。可以提取鱼的边缘轮廓。

    有了轮廓之后,进行边缘坐标点的定位。

    这里,首先确定鱼嘴巴上的点,然后根据鱼身体的各个部分比例,依次提取各个点的位置。

    二、核心程序

    1. clc;
    2. clear;
    3. close all;
    4. warning off;
    5. addpath 'func\'
    6. %读取图片
    7. I0 = imread('images\test.jpg');
    8. I1 = 1-im2bw(rgb2gray(I0),0.9999);
    9. %去除小的连通域
    10. I2 = bwareaopen(I1,100000);
    11. %腐蚀
    12. se1 = strel('disk',5);
    13. I3 = imerode(I2,se1);
    14. %填充
    15. I3 = imfill(I3,'holes');
    16. figure;
    17. subplot(211);imshow(I0);
    18. subplot(212);imshow(I3);
    19. %边缘提取
    20. I4 = edge(I3,'sobel');
    21. %端点提取和连线
    22. %第80个点基本就是B点
    23. [R,C] = size(I4);
    24. [Y,X] = find(I4==1);
    25. Xb = X(80);
    26. Yb = Y(80);
    27. %D
    28. for i = 1:length(X)
    29. if sqrt((Xb - X(i))^2 + (Yb - Y(i))^2) >= 600 & sqrt((Xb - X(i))^2 + (Yb - Y(i))^2) <= 601 & i<3000
    30. Xd = X(i);
    31. Yd = Y(i);
    32. end
    33. end
    34. %A
    35. for i = 1:length(X)
    36. if sqrt((Xb - X(i))^2 + (Yb - Y(i))^2) >= 700 & sqrt((Xb - X(i))^2 + (Yb - Y(i))^2) <= 710 & i<3000 & Y(i)>1.2*Yd
    37. Xa = X(i)+20;
    38. Ya = Y(i)-150;
    39. end
    40. end
    41. %F
    42. for i = 1:length(X)
    43. if sqrt((Xd - X(i))^2 + (Yd - Y(i))^2) >= 1100 & sqrt((Xd - X(i))^2 + (Yd - Y(i))^2) <= 1110 & i > 1000
    44. Xf = X(i);
    45. Yf = Y(i);
    46. end
    47. end
    48. %H
    49. for i = 1:length(X)
    50. if sqrt((Xf - X(i))^2 + (Yf - Y(i))^2) >= 580 & sqrt((Xf - X(i))^2 + (Yf - Y(i))^2) <= 585 & Y(i)>1.05*Yf & i > 2000
    51. Xh = X(i);
    52. Yh = Y(i);
    53. end
    54. end
    55. %J
    56. for i = 1:length(X)
    57. if sqrt((Xh - X(i))^2 + (Yh - Y(i))^2) >= 880 & sqrt((Xh - X(i))^2 + (Yh - Y(i))^2) <= 890 & i > 2000
    58. Xj = X(i);
    59. Yj = Y(i);
    60. end
    61. end
    62. %I
    63. for i = 1:length(X)
    64. if sqrt((Xj - X(i))^2 + (Yj - Y(i))^2) >= 325 & sqrt((Xj - X(i))^2 + (Yj - Y(i))^2) <= 355 & Y(i)>1.2*Yj & X(i) < 1.05*Xj & X(i) > 0.95*Xj
    65. Xi = X(i);
    66. Yi = Y(i);
    67. end
    68. end
    69. %G
    70. for i = 1:length(X)
    71. if sqrt((Xi - X(i))^2 + (Yi - Y(i))^2) >= 200 & sqrt((Xi - X(i))^2 + (Yi - Y(i))^2) <= 210 & X(i) < Xj & Y(i)>Yi
    72. Xg = X(i);
    73. Yg = Y(i);
    74. end
    75. end
    76. %E
    77. for i = 1:length(X)
    78. if sqrt((Xg - X(i))^2 + (Yg - Y(i))^2) >=830 & sqrt((Xg - X(i))^2 + (Yg - Y(i))^2) <= 840 & X(i) < Xg & Y(i)>Yi
    79. Xe = X(i);
    80. Ye = Y(i);
    81. end
    82. end
    83. %C
    84. for i = 1:length(X)
    85. if sqrt((Xe - X(i))^2 + (Ye - Y(i))^2) >=700 & sqrt((Xe - X(i))^2 + (Ye - Y(i))^2) <= 710 & X(i) < Xe
    86. Xc = X(i);
    87. Yc = Y(i)-50;
    88. end
    89. end

    三、测试结果

    A16-62

  • 相关阅读:
    【AI视野·今日CV 计算机视觉论文速览 第260期】Wed, 4 Oct 2023
    Redis的使用--集群模式
    PHP代码审计16—ThinkPHP代码审计入门
    点击化学PEG试剂DBCO-PEG4-NHS,1427004-19-0知识特点总结
    Spring cloud负载均衡 @LoadBalanced注解原理
    如何在JVS低代码表单配置中实现数据的高效管理?
    Spring Aop问题汇总
    推荐一款在线的JDK17中文文档
    Linux tcpdump抓包命令
    Docker简介与安装
  • 原文地址:https://blog.csdn.net/ccsss22/article/details/127895370