clc;
clear;
close all;
warning off;
addpath(genpath(pwd));
ai = imread('a5.jpg');
mi=imread('mango_infected.png');
m4=imread('m4.PNG');
img = imread('potato.png');
type = 'a';
[L, Centers] = imsegkmeans(img, 3);
B = labeloverlay(img,L);
rgbImage = B;
% Display the original image.
subplot(4, 5, 1);
imshow(rgbImage);
title('Original Image(Potato)');
% Split the original image into color bands.
redBand = rgbImage(:,:, 1);
greenBand = rgbImage(:,:, 2);
blueBand = rgbImage(:,:, 3);
% Threshold each color band.
redthreshold = 100;
greenThreshold = 140;
blueThreshold = 170;
redMask = (redBand < redthreshold);
greenMask = (greenBand > greenThreshold);
blueMask = (blueBand < blueThreshold);
% Combine the masks to find where all 3 are "true."
damagedAreasMask = uint8(redMask & greenMask & blueMask);
subplot(4, 5, 2);
imshow(damagedAreasMask, []);
title('Damaged Areas Mask');
maskedrgbImage = uint8(zeros(size(damagedAreasMask))); % Initialize
maskedrgbImage(:,:,1) = rgbImage(:,:,1) .* damagedAreasMask;
maskedrgbImage(:,:,2) = rgbImage(:,:,2) .* damagedAreasMask;
maskedrgbImage(:,:,3) = rgbImage(:,:,3) .* damagedAreasMask;
reqInfo = maskedrgbImage(:, :, 1) > 0 & maskedrgbImage(:, :, 2) > 0 & maskedrgbImage(:, :, 3) > 0;
res = sum(reqInfo(:));
disp(res)
t = 10000;
if type=='b'
t = 5000;
end
if res>t
subplot(4, 5, 3);
imshow(maskedrgbImage);
title('Result: Infected');
else
subplot(4, 5, 3);
imshow(maskedrgbImage);
title('Result: Good');
end
%=================================================================================%
img = imread('good_potato.jpg');
[L, Centers] = imsegkmeans(img, 3);
B = labeloverlay(img,L);
rgbImage = B;
% Display the original image.
subplot(4, 5, 4);
imshow(rgbImage);
title('Original Image(Potato)');
% Split the original image into color bands.
redBand = rgbImage(:,:, 1);
greenBand = rgbImage(:,:, 2);
blueBand = rgbImage(:,:, 3);
% Threshold each color band.
redthreshold = 100;
greenThreshold = 140;
blueThreshold = 170;
redMask = (redBand < redthreshold);
greenMask = (greenBand > greenThreshold);
blueMask = (blueBand < blueThreshold);
% Combine the masks to find where all 3 are "true."
damagedAreasMask = uint8(redMask & greenMask & blueMask);
maskedrgbImage = uint8(zeros(size(damagedAreasMask))); % Initialize
maskedrgbImage(:,:,1) = rgbImage(:,:,1) .* damagedAreasMask;
maskedrgbImage(:,:,2) = rgbImage(:,:,2) .* damagedAreasMask;
maskedrgbImage(:,:,3) = rgbImage(:,:,3) .* damagedAreasMask;
%imtool(maskedrgbImage);
reqInfo = maskedrgbImage(:, :, 1) > 0 & maskedrgbImage(:, :, 2) > 0 & maskedrgbImage(:, :, 3) > 0;
res = sum(reqInfo(:));
disp(res)
t = 10000;
if type=='b'
t = 5000;
end
if res>t
subplot(4, 5, 5);
imshow(maskedrgbImage);
title('Result: Infected');
else
subplot(4, 5, 5);
imshow(maskedrgbImage);
title('Result: Good');
end
%===============================================================================%
img = imread('banana.png');
%img = imread('b1.jpg');
%img = imread('b2.jpg');
type = 'b';
[L, Centers] = imsegkmeans(img, 3);
B = labeloverlay(img,L);
rgbImage = B;
% Display the original image.
subplot(4, 5, 6);
imshow(rgbImage);
title('Original Image(Banana)');
% Split the original image into color bands.
redBand = rgbImage(:,:, 1);
greenBand = rgbImage(:,:, 2);
blueBand = rgbImage(:,:, 3);
% Threshold each color band.
redthreshold = 100;
greenThreshold = 140;
blueThreshold = 170;
redMask = (redBand < redthreshold);
greenMask = (greenBand > greenThreshold);
blueMask = (blueBand < blueThreshold);
% Combine the masks to find where all 3 are "true."
damagedAreasMask = uint8(redMask & greenMask & blueMask);
subplot(4, 5, 7);
imshow(damagedAreasMask, []);
title('Damaged Areas Mask');
maskedrgbImage = uint8(zeros(size(damagedAreasMask))); % Initialize
maskedrgbImage(:,:,1) = rgbImage(:,:,1) .* damagedAreasMask;
maskedrgbImage(:,:,2) = rgbImage(:,:,2) .* damagedAreasMask;
maskedrgbImage(:,:,3) = rgbImage(:,:,3) .* damagedAreasMask;
%imtool(maskedrgbImage);
reqInfo = maskedrgbImage(:, :, 1) > 0 & maskedrgbImage(:, :, 2) > 0 & maskedrgbImage(:, :, 3) > 0;
res = sum(reqInfo(:));
disp(res)
t = 10000;
if type=='b'
t = 5000;
end
if res>t
subplot(4, 5, 8);
imshow(maskedrgbImage);
title('Result: Infected');
else
subplot(4, 5, 8);
imshow(maskedrgbImage);
title('Result: Good');
end
%=================================================================================%
%img = imread('b1.jpg');
img = imread('b2.jpg');
[L, Centers] = imsegkmeans(img, 3);
B = labeloverlay(img,L);
rgbImage = B;
% Display the original image.
subplot(4, 5, 9);
imshow(rgbImage);
title('Original Image(Banana)');
% Split the original image into color bands.
redBand = rgbImage(:,:, 1);
greenBand = rgbImage(:,:, 2);
blueBand = rgbImage(:,:, 3);
% Threshold each color band.
redthreshold = 100;
greenThreshold = 140;
blueThreshold = 170;
redMask = (redBand < redthreshold);
greenMask = (greenBand > greenThreshold);
blueMask = (blueBand < blueThreshold);
% Combine the masks to find where all 3 are "true."
damagedAreasMask = uint8(redMask & greenMask & blueMask);
maskedrgbImage = uint8(zeros(size(damagedAreasMask))); % Initialize
maskedrgbImage(:,:,1) = rgbImage(:,:,1) .* damagedAreasMask;
maskedrgbImage(:,:,2) = rgbImage(:,:,2) .* damagedAreasMask;
maskedrgbImage(:,:,3) = rgbImage(:,:,3) .* damagedAreasMask;
%imtool(maskedrgbImage);
reqInfo = maskedrgbImage(:, :, 1) > 0 & maskedrgbImage(:, :, 2) > 0 & maskedrgbImage(:, :, 3) > 0;
res = sum(reqInfo(:));
disp(res)
t = 10000;
if type=='b'
t = 5000;
end
if res>t
subplot(4, 5, 10);
imshow(maskedrgbImage);
title('Result: Infected');
else
subplot(4, 5, 10);
imshow(maskedrgbImage);
title('Result: Good');
end
%=================================================================================%
% display the Original Image
subplot(4,5,12);
imshow(ai);
title('Internal Image(Apple)')
%%=================================================================================================
n=imhist(ai); % Compute the histogram
N=sum(n); % sum the values of all the histogram values
max=0; %initialize maximum to zero
%%================================================================================================
for i=1:256
P(i)=n(i)/N; %Computing the probability of each intensity level
end
%%================================================================================================
for T=2:255 % step through all thresholds from 2 to 255
w0=sum(P(1:T)); % Probability of class 1 (separated by threshold)
w1=sum(P(T+1:256)); %probability of class2 (separated by threshold)
u0=dot([0:T-1],P(1:T))/w0; % class mean u0
u1=dot([T:255],P(T+1:256))/w1; % class mean u1
sigma=w0*w1*((u1-u0)^2); % compute sigma i.e variance(between class)
if sigma>max % compare sigma with maximum
max=sigma; % update the value of max i.e max=sigma
threshold=T-1; % desired threshold corresponds to maximum variance of between class
end
end
%%====================================================================================================
bw=im2bw(ai,threshold/255); % Convert to Binary Image
subplot(4,5,13);
imshow(bw);
title("Otsu threshold");
imgc = uint8(imcomplement(bw));
%imshow(imgc); % Display the Binary Image
finalImage = uint8(zeros(size(ai)));
finalImage(:,:,1) = ai(:,:,1) .* imgc;
finalImage(:,:,2) = ai(:,:,2) .* imgc;
finalImage(:,:,3) = ai(:,:,3) .* imgc;
%imshow(finalImage);
reqInfo = finalImage(:, :, 1) > 0 & finalImage(:, :, 2) > 0 & finalImage(:, :, 3) > 0;
res = sum(reqInfo(:));
disp(res)
t = 10000;
%if type=='b'
% t = 5000;
%end
subplot(4,5,14);
if res>t
imshow(finalImage);
title('Result: Infected');
else
imshow(finalImage);
title('Result: Good');
end
%==========================================================================%
subplot(4,5,16);
imshow(mi);
title('infected mango(Spongy tissue)');
subplot(4,5,17);
imshow(m4);
title('x-ray image');
m4=rgb2gray(m
基于k均值和Otsu阈值分割算法的水果蔬菜缺陷检测matlab仿真
版权申诉
5星 · 超过95%的资源 191 浏览量
2022-10-15
00:41:57
上传
评论 3
收藏 545KB RAR 举报
fpga和matlab
- 粉丝: 15w+
- 资源: 2550
最新资源
- Python爬取淘宝热卖商品并可视化分析
- 5152单片机proteus仿真和源码将按键次数写入AT24C02再读出并用1602LCD显示
- SE-SSD复现过程(Det3D的安装教程)
- 基于Python的在线学习与推荐系统设计与实现(论文+源码)-kaic
- 串口通过 YMODEM 协议进行文件传输
- 蓝桥杯2024年第十五届省赛真题-前缀总分
- com.qihoo.appstore_300101305-1.apk
- tensorflow-gpu-2.7.1-cp37-cp37m-manylinux2010-x86-64.whl
- tensorflow-2.7.2-cp37-cp37m-manylinux2010-x86-64.whl
- tensorflow-2.7.1-cp39-cp39-manylinux2010-x86-64.whl
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈