Colour segmentation on resistor color band and calculate the value

3 visualizaciones (últimos 30 días)
reginald kwenda
reginald kwenda el 24 de Mzo. de 2015
Movida: DGM el 12 de Feb. de 2023
hello guys i am trying to segment colour bands of a resistor using image processing and calculate the colours to give resistance . I am new to image processing any of your help is appreciated . i have come up with the code below but i am now stuck on how i can assign each colour band a number and do the calculations. Below the code is picture i am working with.
  4 comentarios
reginald kwenda
reginald kwenda el 24 de Mzo. de 2015
the first resistor is a 5600 and second resistor is 300k

Iniciar sesión para comentar.

Respuestas (3)

Image Analyst
Image Analyst el 24 de Mzo. de 2015
Neither the lighting nor magnification is good enough to determine color robustly. Sorry, but the image is crummy. Zoom in and provide more light. Also, put the resistor in a jig to make sure it's positioned in the same place in each image.
  3 comentarios

Iniciar sesión para comentar.


Image Analyst
Image Analyst el 25 de Mzo. de 2015
What I would do is to convert that image to LAB color space with rgb2lab(). Then find out the lab values of each color by looking at the images in the variable inspector. Then calculate a delta E (color difference) image for each know, predefined, fixed color. For example an image of the delta E between that lab image and the red color, then an image of the delta E between that lab image and the green color, and so on. Classify the pixel according to which delta E is least, meaning the color is closest to that color. I think you can do this if you insert the delta E images into a 3D matrix and then use min() across the third dimension and take the second output argument of min() as the classified image.
Delta E is just the sqrt of the delta L square plus... etc. For example to compute delta E between the image and the LAB of the red stripe:
deltaE = sqrt((L-lRed).^2 + (A - aRed).^2 + (B - bRed).^2);
Delta E is the industry standard metric for measuring color difference. Do the same for the green, blue, yellow, white, silver, gold, etc. colors.
  14 comentarios
reginald kwenda
reginald kwenda el 2 de Abr. de 2015
Movida: DGM el 12 de Feb. de 2023
rgbImage = imread('C:\Users\ab2123\Desktop\r1.jpg');
close all
figure(1)
subplot(2,1,1)
imshow(rgbImage);
impixelinfo;
subplot(2,1,2)
HSVimage = rgb2hsv(rgbImage);
imshow(HSVimage);
h = HSVimage(:, :, 1);
s = HSVimage(:, :, 2);
v = HSVimage(:, :, 3);
figure(2)
imshow(h);
figure(3)
imshow(s);
Black=10;
Brown=1;
Red = 2;
Orange=3;
Yellow=4;
Green=5;
Blue=6;
violet=7;
Gray=8;
White=9;
colour=0;
[ImSizeY,ImSizeX,null] = size(h);
Segment1 = zeros(ImSizeY, ImSizeX);
output = zeros(size(rgbImage));
HueSearchVal = [(0.3492 - 0.010) , (0.3492 +0.010) ; (0.6218 - 0.050) , (0.6218 +0.050) ; (0.9887 - 0.020) , (0.9887 +0.020)];
SaturationVal = [(0.7188 - 0.050) , (0.7188 +0.050) ; (0.8286 - 0.050) , (0.8286 +0.050) ; (0.8333 - 0.050) ,(0.8333 + 0.050)]
HueSearchValue = [Green, Blue, Red];
% (0.03509-0.010),(0.03509+0.010);(0.7 - 0.010),(0.7+0.010);(0.9275-0.010 ),(0.9275+0.010);(0.9722-0.010),(0.9722+0.010);(0.9167-0.001),(0.9167);]
%SaturationVal = [(0.7188 - 0.010) , (0.7188 +0.010) ; (0.8286 - 0.010) , (0.8286 +0.010) ; (0.8333 - 0.010) ,(0.8333 + 0.010)
%if HueSearchVal == 0
% colour = colour + Green;
%else if HueSearchVal == 0
% colour = colour + Green;
%end
for LookupIndex = 1:1:length(HueSearchVal)
for indexY=1:1:ImSizeY
for indexX=1:1:ImSizeX
if (s(indexY,indexX) > SaturationVal(LookupIndex,1)) && (s(indexY,indexX) < SaturationVal(LookupIndex,2))
if (h(indexY,indexX) > HueSearchVal(LookupIndex,1)) && (h(indexY,indexX) < HueSearchVal(LookupIndex,2))
Segment1(indexY,indexX) = HueSearchValue(LookupIndex);
output(indexY,indexX,:) = rgbImage(indexY,indexX,:);
else
Segment1(indexY,indexX) = 0;
output(indexY,indexX) = 0;
end
end
end
end
end
figure(4)
imshow(Segment1)
figure(5)
imshow(output)
figure(6)
imshow(rgbImage);
reginald kwenda
reginald kwenda el 2 de Abr. de 2015
Movida: DGM el 12 de Feb. de 2023
came up with this code and it can segment the colour bands with problems but how can any1 with ideas on how can proceed in doing the calculations to get the resistance value.

Iniciar sesión para comentar.


THINLAY  GYALSON
THINLAY GYALSON el 16 de Sept. de 2017
Editada: Walter Roberson el 16 de Sept. de 2017
  1 comentario
Image Analyst
Image Analyst el 16 de Sept. de 2017
Wow, people can get a published paper for this kind of super trivial, non-novel application? And the article didn't even say how they found the color bands and compared them to references.

Iniciar sesión para comentar.

Categorías

Más información sobre Graphics Performance en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by