如何对图像进行二值化,Matlab
我必须对图像进行二值化,所以我的白色像素是黑色像素的两倍。 有人给了我答案:如何对图像进行二值化,Matlab,matlab,Matlab,我必须对图像进行二值化,所以我的白色像素是黑色像素的两倍。 有人给了我答案: binarized = im2bw(image, 0.28) 我不知道这个人怎么知道0.28级的白光是黑光的两倍? 在这段代码中,我必须使用gamma校正,使用imhist,二值化。我的代码: close all; clear all; clc; img = imread('cameraman.tif'); img = double(img)/255; coeff = 0.6;
binarized = im2bw(image, 0.28)
我不知道这个人怎么知道0.28级的白光是黑光的两倍?
在这段代码中,我必须使用gamma校正,使用imhist,二值化。我的代码:
close all;
clear all;
clc;
img = imread('cameraman.tif');
img = double(img)/255;
coeff = 0.6;
gamma = img.^coeff;
figure;
subplot(121); imshow(img); title('Oryginalny');
subplot(122); imshow(gamma); title('Po korekcji gamma');
equalized = histeq(gamma,32);
figure;
subplot(221); imshow(gamma); title('Po korekcji gamma');
subplot(222); imshow(equalized); title('Wyrównany');
subplot(223); imhist(gamma); title('Po korekcji gamma');
subplot(224); imhist(equalized); title('Wyrównany');
SE = strel('disk', 3);
eroded = imerode(equalized,SE);
opening = imdilate(eroded,SE);
figure;
subplot(121); imshow(equalized); title('Wyrównany');
subplot(122); imshow(opening); title('Otwarcie');
binarized = im2bw(opening, 0.28);
figure;
imshow(binarized); title('Po binaryzacji');
w = binarized == 1;
b = binarized == 0;
biale = sum(w(:));
czarne = sum(b(:));
这里不能只使用硬编码值-您必须首先根据图像的亮度直方图计算阈值,然后将该值用作
im2bw
的阈值。谢谢您的回答,但如何操作?我是一个新手。首先阅读MATLAB手册条目,因为我太笨了,我已经在代码中使用了imhist。我编辑了我的第一篇文章,以便您可以看到我的代码,但我不理解二值化中imhist和level之间的关系(1)使用imhist
生成直方图(2)扫描直方图以找到阈值,其中阈值上的像素数是阈值下的两倍(3)使用im2bw
应用该阈值。