การตรวจจับวัตถุโดยการใช้ HSV
การตรวจจับวัตถุโดยการใช้ HSV
ระบบสี HSV (Hue, Saturation, Value) หรือ HSB (Hue, Saturation, Brightness) เป็นระบบสีที่นิยมใช้กันในหมู่นักวิจัย เนื่องจากเป็นระบบสีที่ใกล้เคียงกับความคิดของมนุษย์ได้ดีกว่าระบบสี RGB โดย Hue คือสีของภาพ, Saturation คือ ปริมาณความอิ่มตัวของสี ยิ่งมีค่านี้มาก ภาพจะมีสีสดยิ่งมีน้อย ภาพจะยิ่งมีสีน้อยลง จนในที่สุดจะกลายเป็นรูปที่ลักษณะแบบ Grayscale และ Value หรือ Brightness เป็นค่าที่แสดงถึงปริมาณความสว่างของภาพ หากมีค่ามากภาพจะยิ่งมีความสว่างมาก ในการตัดพื้นหลังออกจากภาพใช้วิธีการแปลงค่าสีจาก RGB เป็น HSV และทำการหาช่วงของสีของพื้นหลัง ที่ซึ่ง HSV สามารถแปลงจาก RGB ได้ดังนี้
เมื่อ max = sup (R, sup (G,B )) คือค่าสูงสุดของหนึ่งจุดสี RGB และ min = inf (R, inf (G,B )) คือค่าต่ำสุดของหนึ่งจุดสี RGB ตามลำดับ
ภาพที่ 17 โมเดลสี HSV ในรูปแบบโคน (Cone)
โค๊ดตัวอย่าง
clc,
close all,
clear all,
img = imread('D:\egg.jpg');
figure, imshow(img)
%%
grayim = rgb2gray(img);
imhsv = rgb2hsv(img);
figure, imshow(imhsv), impixelinfo
h = imhsv(:,:,1);
s = imhsv(:,:,2);
v = imhsv(:,:,3);
[r c] = size(h);
outhsv = zeros(r,c);
for i = 1:r
for j = 1:c
if h(i,j) >= 0.07 && h(i,j) <= 0.20 && s(i,j) >= 0.10 && s(i,j) <= 0.45 && v(i,j) >= 0.70 && v(i,j) <= 0.90
outhsv(i,j) = 255;
else
outhsv(i,j) = 0;
end
end
end
figure, imshow(outhsv), impixelinfo
ในขั้นตอนแรกทำการแปลงภาพสี RGB เป็น HSV ด้วยโค๊ด imhsv = rgb2hsv(img); หลังจากนั้นทำการแยก ส่วนประกอบของสีเป็นสามส่วนประกอบคือ H, S และ V ด้วยโค๊ด h = imhsv(:,:,1); s = imhsv(:,:,2); และ v = imhsv(:,:,3); ตามลำดับ ในการตัดส่วนของผิวใช้คำสั่ง if else ในการตัดสินใจโดยกำหนดช่วงให้ทั้งสามส่วนประกอบของสี ด้วยโค๊ด if h(i,j) >= 0.07 && h(i,j) <= 0.20 && s(i,j) >= 0.10 && s(i,j) <= 0.45 && v(i,j) >= 0.70 && v(i,j) <= 0.90
ภาพที่ 18 ภาพ Input
ภาพที่ 19 ภาพที่แปลงเป็น HSV แล้ว
ภาพที่ 20 วัตถุที่ตรวจจับได้
Comments
Post a Comment