MATLAB红苹果提取(颜色分割) 您所在的位置:网站首页 广告用中国地图罚款 MATLAB红苹果提取(颜色分割)

MATLAB红苹果提取(颜色分割)

2024-01-09 01:21| 来源: 网络整理| 查看: 265

(1)将已知图像进行消噪处理

(2)对彩色图像进行目标和背景分析

(3)通过颜色将图像进行分割

(4)进行形态学处理,提取目标

看了一下这几个博客,重要的是要得到的就是二值化的分割出来的主体图像,剩下提取的步骤其实不算难。可以使用图像相乘,或者颜色叠加。

用 matlab 对图像进行局部提取

试了一下使用OTSU进行分割,效果不太理想。直方图也比较平均,无法提取出来。

区域生长分割,效果依旧很差。

​由于给定的图片主要分为红色的苹果和绿色的叶子部分,所以可以基于颜色进行分割。

老师给的代码是K均值聚类算法,不明觉厉。

clear,clc,close all; Image=imread('fruit.jpg'); subplot(121);imshow(Image),title('原图像'); hsv=rgb2hsv(Image); h=hsv(:,:,1); h(h>330/360)=0; [N,M]=size(h); training=h(:); startdata = [0;60/360;120/360;180/360;240/360;300/360]; [IDX,C]= kmeans(training,6,'Start',startdata); idbw = (IDX == 1); template = reshape(idbw, size(h)); subplot(122);imshow(template),title('分割后的图像'); imwrite(template,'clusterseg.jpg');

由于没有装工具箱,我使用不了kmeans函数,所以研究了一下,使用了基于RGB分量分割,对应的红色R=1,B,G参数自己调整,方法在这篇帖子。

matlab 对颜色差异明显的目标 实现图像分割

主要使用了方法2得到二值化后的图像,然后颜色叠加部分采用了这个链接中的方法,将得到的二值图像分别和原图提取出来的RGB分量相乘。在灰度处理的时候添加了填充洞和删掉小块噪点的函数,使图像更加完整

clear all pic1=imread('apple.png'); %分别提取RGB三个通道(也就是三个二维矩阵) R=pic1(:,:,1); G=pic1(:,:,2); B=pic1(:,:,3); %获取图像的矩阵 [y,x,z]=size(pic1); %使用灰度整合二值化方法 %循环每个像素 for i=1:x for j=1:y %改变灰度值,系数可以自己调整 pic2(j,i)=(1*R(j,i)-0.3*G(j,i)-0.3*B(j,i)); end end t=graythresh(pic2); %确定二值化阈值 pic3=im2bw(pic2,t); %二值化 pic3=imfill(pic3,'holes'); %填充洞 pic3=bwareaopen(pic3,10); %删掉一些小块噪点 %由于二值图元素的类型都是 logical型(逻辑型),在进行运算处理时不符合要求,所以转为 uint8 a1=im2uint8(pic3)/255; R1=R.*a1; %各个通道的矩阵乘以二值图,中心的蝴蝶矩阵数值不变,背景变为0 G1=G.*a1; B1=B.*a1; b1(:,:,1)=R1; %三个通道叠加,组成一个三维的RGB图 b1(:,:,2)=G1; b1(:,:,3)=B1; %显示结果环节 figure subplot(1,2,1),imshow(pic1),title("原图"); subplot(1,2,2),imshow(b1),title("处理结果");

相比起来效果还是差了点,苹果底部反射叶子的部分因为有绿色所以不是很精确。

当然红色玫瑰也ok



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有