I = imread('boat.png');
I2 = im2double (I);
figure
imagesc (I2), colorbar;
1 Intensity Histograms
figure
Igray=rgb2gray(I2);
subplot(2,2,1); hist(Igray(:),64); title('Intensity')
Ired=I2(:,:,1);
subplot(2,2,2); hist(Ired(:),64); title('Red')
Igreen=I2(:,:,2);
subplot(2,2,3); hist(Igreen(:),64); title('Green')
Iblue=I2(:,:,3);
subplot(2,2,4); hist(Iblue(:),64); title('Blue')
2 Morphological Operations
figure, colormap('default')
Iseg=zeros(size(Igray));
Iseg(Igray<0.68)=1;
Iseg(Igray<0.47)=2;
Iseg(Igray<0.37)=3;
imagesc(Iseg); colorbar;
figure, colormap('default')
IsegD=imdilate(Iseg,strel('disk',3,0));
IsegE=imerode(Iseg,strel('disk',3,0));
IsegO=imopen(Iseg,strel('disk',3,0));
IsegC=imclose(Iseg,strel('disk',3,0));
subplot(2,2,1); imagesc(IsegD); title('Dilated')
subplot(2,2,2); imagesc(IsegE); title('Eroded')
subplot(2,2,3); imagesc(IsegO); title('Opened')
subplot(2,2,4); imagesc(IsegC); title('Closed')
3 k-means Clustering
figure, colormap('default')
Iseg=imsegkmeans(im2single(I2),5);
imagesc(Iseg); colorbar; title('k-means Clustering on RGB')
figure, colormap('default')
[a,b,c]=size(I2);
[X,Y] = meshgrid(1:b,1:a);
featureSet = cat(3,I2,X,Y);
Iseg=imsegkmeans(im2single(featureSet),5);
imagesc(Iseg); colorbar; title('k-means Clustering on RGB+XY')
4 Hierarchical Agglomerative Clustering
Ismall=imresize(I2,0.25,'bilinear');
[a,b,c]=size(Ismall);
Msmall=reshape(Ismall,[a*b,c]);
Mseg=clusterdata(Msmall,'cutoff',0.3,'criterion','distance','linkage','average','distance','euclidean');
Iseg=reshape(Mseg,[a,b]);
figure, colormap('default')
imagesc(Iseg); colorbar; title('Hierarchical Agglomerative Clustering on RGB')
figure; colormap('default')
Msmall=Msmall-min(Msmall);
Msmall=Msmall./max(Msmall);
Mseg=clusterdata(Msmall,'cutoff',0.3,'criterion','distance','linkage','average','distance','euclidean');
Iseg=reshape(Mseg,[a,b]);
imagesc(Iseg); colorbar; title('Hierarchical Agglomerative Clustering on scaled RGB')
Code
I = imread('boat.png');
I2 = im2double (I);
figure
imagesc (I2), colorbar;
%% Intensity Histograms
figure
Igray=rgb2gray(I2);
subplot(2,2,1); hist(Igray(:),64); title('Intensity')
Ired=I2(:,:,1);
subplot(2,2,2); hist(Ired(:),64); title('Red')
Igreen=I2(:,:,2);
subplot(2,2,3); hist(Igreen(:),64); title('Green')
Iblue=I2(:,:,3);
subplot(2,2,4); hist(Iblue(:),64); title('Blue')
%% Morphological Operations
figure, colormap('default')
Iseg=zeros(size(Igray));
Iseg(Igray<0.68)=1;
Iseg(Igray<0.47)=2;
Iseg(Igray<0.37)=3;
imagesc(Iseg); colorbar;
Iseg (92, 91)
Iseg (286, 279)
Iseg (292, 299)
Iseg (451, 352)
figure, colormap('default')
IsegD=imdilate(Iseg,strel('disk',3,0));
IsegE=imerode(Iseg,strel('disk',3,0));
IsegO=imopen(Iseg,strel('disk',3,0));
IsegC=imclose(Iseg,strel('disk',3,0));
subplot(2,2,1); imagesc(IsegD); title('Dilated')
subplot(2,2,2); imagesc(IsegE); title('Eroded')
subplot(2,2,3); imagesc(IsegO); title('Opened')
subplot(2,2,4); imagesc(IsegC); title('Closed')
IsegD (220, 1)
IsegE (220, 1)
IsegO (220, 1)
IsegC (220, 1)
%% k-means Clustering
figure, colormap('default')
Iseg=imsegkmeans(im2single(I2),5);
imagesc(Iseg); colorbar; title('k-means Clustering on RGB')
figure, colormap('default')
[a,b,c]=size(I2);
[X,Y] = meshgrid(1:b,1:a);
featureSet = cat(3,I2,X,Y);
Iseg=imsegkmeans(im2single(featureSet),5);
imagesc(Iseg); colorbar; title('k-means Clustering on RGB+XY')
Iseg (58, 612)
Iseg (145, 174)
Iseg (168, 539)
Iseg (349, 549)
Iseg (374, 229)
%% Hierarchical Agglomerative Clustering
Ismall=imresize(I2,0.25,'bilinear');
[a,b,c]=size(Ismall);
Msmall=reshape(Ismall,[a*b,c]);
Mseg=clusterdata(Msmall,'cutoff',0.3,'criterion','distance','linkage','average','distance','euclidean');
Iseg=reshape(Mseg,[a,b]);
figure, colormap('default')
imagesc(Iseg); colorbar; title('Hierarchical Agglomerative Clustering on RGB')
Iseg (2, 40)
Iseg (46, 16)
Iseg (80, 26)
Iseg (88, 3)
Iseg (88, 125)
figure; colormap('default')
Msmall=Msmall-min(Msmall);
Msmall=Msmall./max(Msmall);
Mseg=clusterdata(Msmall,'cutoff',0.3,'criterion','distance','linkage','average','distance','euclidean');
Iseg=reshape(Mseg,[a,b]);
imagesc(Iseg); colorbar; title('Hierarchical Agglomerative Clustering on scaled RGB')
Iseg (2, 40)
Iseg (46, 16)
Iseg (80, 26)
Iseg (88, 3)
Iseg (88, 125)