Azzera filtri
Azzera filtri

How to fill the image of the bottle with black color?

1 visualizzazione (ultimi 30 giorni)
Hi,
I want to fill the image of the bottle with black color. I need to modify my coding. Need help from someone.
clear;close all;
% Load image
I=imread('C:\Users\Nabilah Syazana\Desktop\Reference\Reference Image\Ref_Red.jpg');
%Threshold & Segment image
BW=adaptivethreshold(I,50,0.06,0);
figure; imshow(I);
figure; imshow(BW);
% Calculate Area, Perimente, Extent, Major Axis and Minor Axis
Measurements = regionprops(BW, 'Area', 'Perimeter', 'Extent', 'MajorAxisLength', 'MinorAxisLength');
Area1 = [Measurements.Area];
Perimeter1 = [Measurements.Perimeter]
Area = sum(Area1)
Perimeter = sum(Perimeter1)
function bw=adaptivethreshold(IM,ws,C,tm)
%ADAPTIVETHRESHOLD An adaptive thresholding algorithm that seperates the
%foreground from the background with nonuniform illumination.
% bw=adaptivethreshold(IM,ws,C) outputs a binary image bw with the local
% threshold mean-C or median-C to the image IM.
% ws is the local window size.
% tm is 0 or 1, a switch between mean and median. tm=0 mean(default); tm=1 median.
if (nargin<3)
error('You must provide the image IM, the window size ws, and C.');
elseif (nargin==3)
tm=0;
elseif (tm~=0 && tm~=1)
error('tm must be 0 or 1.');
end
IM=mat2gray(IM);
if tm==0
mIM=imfilter(IM,fspecial('average',ws),'replicate');
else
mIM=medfilt2(IM,[ws ws]);
end
sIM=mIM-IM-C;
bw=im2bw(sIM,0);
bw=imcomplement(bw);
Below is my sample image
  1 Commento
abuzer
abuzer il 23 Gen 2017
Firstof all you can try strel function for closing area than delete upside of bottle with area threshold than use imfill.ı hopeit helps

Accedi per commentare.

Risposta accettata

Image Analyst
Image Analyst il 23 Gen 2017
Try the attached file.

Più risposte (1)

Image Analyst
Image Analyst il 23 Gen 2017
Did you try varying the windowsize and C value?

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by