设计任务
对于一幅芒果果实内部的 CT 断层图像,试采用图像处理与分析技术,设计适当的算法和程序,首先分割出其中的坏损区域,然后计算其像素面积占整个果肉区域的百分比(单层坏损率)。请按统一要求写出算法原理、设计流程,并完成测试分析等报告内容。
算法设计
解题思路:二值化图像,使用一个背景值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
设计分析:完成任务。
测试分析
图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)