Бинаризация изображения
От: superbober  
Дата: 12.06.13 17:33
Оценка:
Доброго времени суток,
Подскажите как мне изображение которое в формате YUV_NV1 сконвертировать в бинарное?
Я тут нашел EmguCV и код который может файл сделать бинарный, но мне надо из байтов да еще и в другом формате.
Гуглил, искал, не могу вкурть как мне это сделать.

З.Ы. а сама задача — обработка изображение с камеры андроида, для этого мне надо его бинаризировать


OpenFileDialog open = new OpenFileDialog();
            //open.Filter = "Image Files (*.tif; *.dcm; *.jpg; *.jpeg; *.bmp)|*.tif; *.dcm; *.jpg; *.jpeg; *.bmp";
            int Blue_threshold = 50; //0-255
            int Green_threshold = 50; //0-255
            int Red_threshold = 50; //0-255

            if (open.ShowDialog() == DialogResult.OK)
            {

                Image<Bgr, Byte> img_colour = new Image<Bgr, Byte>(open.FileName);
                pictureBox1.Image = img_colour.ToBitmap(); //Display if you want
                pictureBox1.BackgroundImageLayout = ImageLayout.Zoom;
                img_colour = img_colour.ThresholdBinary(new Bgr(Blue_threshold, Green_threshold, Red_threshold), new Bgr(255, 255, 255));
                pictureBox2.Image = img_colour.ToBitmap();//display results in different picturebox
                pictureBox1.BackgroundImageLayout = ImageLayout.Zoom;
                
            }
Re: Бинаризация изображения
От: vit_as Россия  
Дата: 12.06.13 19:20
Оценка:
Здравствуйте, superbober, Вы писали:

S>Доброго времени суток,

S>Подскажите как мне изображение которое в формате YUV_NV1 сконвертировать в бинарное?
S>Я тут нашел EmguCV и код который может файл сделать бинарный, но мне надо из байтов да еще и в другом формате.
S>Гуглил, искал, не могу вкурть как мне это сделать.

S>З.Ы. а сама задача — обработка изображение с камеры андроида, для этого мне надо его бинаризировать


В формате YUV первая составляющая Y — яркость, UV — цветоразностные компоненты. Если стоит задача бинаризации по яркости, то просто рассматриваем первую компоненту. Для этой задачи не обязательно использовать OpenCV (EmguCV).


byte[] yuv = loadBitmapYUV(...);

int width, height, stride;

byte[] bin = new byte[width*height];
for(int y=0;y<height;y++)
{
   for(int x=0;x<width;x++)
   {
      bin[y*width+x] = yuv[x*3+stride*y] > thresold? 0 : 255;
   }
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.