哈工大深研院数字图像处理第二次大作业:水果自动识别(1)ROI提取

来源:互联网 发布:当铺软件 编辑:程序博客网 时间:2024/05/16 09:00

针对水果识别,需要有一个方法来自动获取ROI信息,这里采用分水岭算法可以很好地实现目标要求:

%Name: ROI extraction%Function: Extract ROI in a RGB image%Author:    Changle Zhang, zhangchanglehit@163.comclc;clear all;close all;%Initilizationrgbimg=imread('Fruit Samples For Project2/澳洲蜜桔/澳洲蜜桔_image069.jpg');%rgbimg=imread('Fruit Samples For Project2/番石榴/番石榴_image119.jpg');figure;imshow(rgbimg);r=rgbimg(:,:,1);g=rgbimg(:,:,2);b=rgbimg(:,:,3);% imshow(r);% figure;% imshow(g);% figure;% imshow(b);% grayimg=rgb2gray(rgbimg);% imshow(grayimg);hsvimg=rgb2hsv(rgbimg);H=hsvimg(:,:,1);S=hsvimg(:,:,2);V=hsvimg(:,:,3);% figure;% imshow(H);% title('H');% figure;% imshow(S);% title('S');% figure;% imshow(V);% title('V');%rgb = imread('pears.png');%读取原图像I = S;%转化为灰度图像hy = fspecial('sobel');%sobel算子hx = hy';Iy = imfilter(double(I), hy, 'replicate');%滤波求y方向边缘Ix = imfilter(double(I), hx, 'replicate');%滤波求x方向边缘gradmag = sqrt(Ix.^2 + Iy.^2);%求摸%3.分别对前景和背景进行标记:本例中使用形态学重建技术对前景对象进行标记,首先使用开操作,开操作之后可以去掉一些很小的目标。se = strel('disk', 20);%圆形结构元素Io = imopen(I, se);%形态学开操作Ie = imerode(I, se);%对图像进行腐蚀Iobr = imreconstruct(Ie, I);%形态学重建Ioc = imclose(Io, se);%形态学关操作Iobrd = imdilate(Iobr, se);%对图像进行膨胀Iobrcbr = imreconstruct(imcomplement(Iobrd), imcomplement(Iobr));%形态学重建Iobrcbr = imcomplement(Iobrcbr);%图像求反bw = im2bw(Iobrcbr, graythresh(Iobrcbr));%转化为二值图像figure;imshow(bw), %显示二值图像title('Thresholded opening-closing by reconstruction')bww=im2uint8(bw)/255;rgbimg(:,:,1)=bww.*rgbimg(:,:,1);rgbimg(:,:,2)=bww.*rgbimg(:,:,2);rgbimg(:,:,3)=bww.*rgbimg(:,:,3);figure;imshow(rgbimg);

输入图像:


提取ROI后的结果:


算法思路:通过rgb2hsv得到色调信息,利用对色调信息的分水岭变换得到我们需要的橙色区域,然后利用该区域作为ROI

1 0
原创粉丝点击