23 กรกฎาคม 2552

RGB1 = imread('football.jpg');

Example 2 - Analyzing Images
เปิดรูป เมล็ดข้าว
I = imread('rice.png');
imshow(I)

สร้าง background
    strel แบบ disk จะได้ เมตริกซ์ที่บริเวณมุม เป็น ศูนย์ ตรงกลางๆ เป็น 1 คล้ายวงกลม
อยู่กลางเมตริกซ์
    imopen เป็น Erosion ตามด้วย Dilation มันจะตรงข้ามกับ closing อ้างอิง
background = imopen(I,strel('disk',15));

ลองวาดกราฟแบบ พื้นผิว ดูความขาวดำของสีพื้น
figure, surf(double(background(1:8:end,1:8:end))),zlim([0 255]);
set(gca,'ydir','reverse');

ทำให้เมล็ดข้าวกับ background สีมันแตกต่างกันมากขึ้น
I2 = I - background;
imshow(I2)
แต่มันจะทำให้ภาพเมล็ดข้าวมืดลง


เพิ่ม contrast ใช้ imadjust(I) = imadjust(I,stretchlim(I)) คือมันจะแผ่ขยายสีให้เต็มช่วงเลย
อ้างอิง
I3 = imadjust(I2);
imshow(I3);


ทำ threshold ให้เป็นภาพขาวกับดำเท่านั้น
level = graythresh(I3);
bw = im2bw(I3,level);
level หาค่าที่เหมาะสมที่จะแบ่งระหว่างสีขาวกับสีดำ ด้วย graythresh(I)
im2bw แปลง grayscale เป็น binary

จะเห็นว่ามีบางจุดที่เป็น noise อยู่ เป็นจุดขาวๆเล็กๆ ทำopenเพื่อให้หายไป
bw = bwareaopen(bw, 50);
imshow(bw)















2 ความคิดเห็น:

monoob กล่าวว่า...

ขอบคุณครับที่ทำไว้ศึกษา
คือผมทำโปรเจคเกี่ยวกับ Image โดยใช้ Mathlab ครับ
ผมอยากรู้ว่า
ใช้อะไรตรวจสอบ หาตำแหน่งของวัตถุที่มันแปลกปลอม ในภาพครับ

Unknown กล่าวว่า...

มีภาพตัวอย่างให้ดูมั้ยครับ
วัตถุ ปกติ กับวัตถุแปลกปลอม