树欲静而风不止慢一点吧

树欲静而风不止慢一点吧

设计任务

对于一幅芒果果实内部的 CT 断层图像,试采用图像处理与分析技术,设计适当的算法和程序,首先分割出其中的坏损区域,然后计算其像素面积占整个果肉区域的百分比(单层坏损率)。请按统一要求写出算法原理、设计流程,并完成测试分析等报告内容。

华南农业大学|图像处理与分析技术综合测试|题目解答:求芒果单层坏损率-LMLPHP

算法设计

解题思路:二值化图像,使用一个背景值0、芒果区域值为1的图像A,与经过二值化及中值滤波的芒果CT图像C异或,得到与除了坏损区域值为1,其他区域皆为0的图像B。计算图像A和B值为1像素点个数分别为cnt1和cnt2,单层坏损率即为cnt2/cnt1。

设计方案说明使用matlab的库。

关键算法的设计原理

形态学闭运算:消除黑色小区域

异或:像素点值相同则为0,不同为1

算法步骤

读入图像→中值滤波→二值化图像得图像C→形态学闭运算得图像A→A与C异或得图像B→统计图像A和B值为1像素点个数→计算单层坏损率

程序设计

算法名称:中值滤波、二值化图像、形态学闭运算、异或

工具函数medfilt2、imbinarize、imclose、xor

设计分析完成任务。

测试分析

华南农业大学|图像处理与分析技术综合测试|题目解答:求芒果单层坏损率-LMLPHP图1

图1从左到右,为原图→均值滤波后图→二值化图→闭运算图→闭运算图与均值滤波图异或图

其中二值化函数(Otsu方法)阈值取0.55,即BW=imbinarize(G,0.55);

闭运算使用半径为10的盘形结构元素。

特点与优势:算法简单,使用滤波去噪。

存在的问题和不足:“闭运算图与均值滤波图异或图”左下方有白色点,误识别。 

matlab代码

clc,clear
A=imread('ipa05.bmp');
G=medfilt2(A);
BW=imbinarize(G,0.55);
guo=imclose(BW,strel('disk',10)); 
huai=xor(guo,BW);
huai_cnt=sum(sum((huai)));
guo_cnt=sum(sum((guo)));
disp("单层坏损率:");
disp(num2str(huai_cnt/guo_cnt))
figure
subplot(151),imshow(A)
subplot(152),imshow(G)
subplot(153),imshow(BW)
subplot(154),imshow(guo)
subplot(155),imshow(huai)
05-15 04:04