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

针对水果识别 , 需要有一个方法来自动获取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);

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

文章插图
输入图像:
【1哈工大深研院数字图像处理第二次大作业:水果自动识别ROI提取】
1  哈工大深研院数字图像处理第二次大作业:水果自动识别ROI提取

文章插图
提取ROI后的结果:
1  哈工大深研院数字图像处理第二次大作业:水果自动识别ROI提取

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