ฉันกำลังพยายามใช้อัลกอริทึม binarization ต่าง ๆ กับรูปภาพที่แสดง:
นี่คือรหัส:
clc;
clear;
x=imread('n2.jpg'); %load original image
ตอนนี้เราปรับขนาดภาพเพื่อให้การคำนวณกลายเป็นเรื่องง่ายขึ้นในภายหลังสำหรับเรา
size(x);
x=imresize(x,[500 800]);
figure;
imshow(x);
title('original image');
z=rgb2hsv(x); %extract the value part of hsv plane
v=z(:,:,3);
v=imadjust(v);
ตอนนี้เราพบว่าค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานที่จำเป็นสำหรับอัลกอริทึม niblack และ% sauvola
m = mean(v(:))
s=std(v(:))
k=-.4;
value=m+ k*s;
temp=v;
% การนำ niblack thresholding อัลกอริทึม:
for p=1:1:500
for q=1:1:800
pixel=temp(p,q);
if(pixel>value)
temp(p,q)=1;
else
temp(p,q)=0;
end
end
end
figure;
imshow(temp);
title('result by niblack');
k=kittlerMet(g);
figure;
imshow(k);
title('result by kittlerMet');
การใช้อัลกอริทึม thresholding sauvola:
val2=m*(1+.1*((s/128)-1));
t2=v;
for p=1:1:500
for q=1:1:800
pixel=t2(p,q);
if(pixel>value)
t2(p,q)=1;
else
t2(p,q)=0;
end
end
ปลาย
figure;
imshow(t2);
title('result by sauvola');
ผลลัพธ์ที่ฉันได้รับมีดังนี้:
อย่างที่คุณเห็นภาพผลลัพธ์ถูกลดระดับลงในจุดที่มืดกว่าใครช่วยแนะนำวิธีเพิ่มประสิทธิภาพของฉันได้บ้าง ??