如何对图像进行二值化,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
应用该阈值。