BMP图像二值化处理的问题求教
for y := 0 to BitImg.Picture.Bitmap.Height - 1 do
begin
b := BitImg.Picture.Bitmap.ScanLine[y];
for x := 0 to BitImg.Picture.Bitmap.Width - 1 do
begin
//一个象素点三个字节
Gray := Round(b[x * 3 + 2] * 0.3 + b[x * 3 + 1] * 0.59 + b[x * 3] * 0.11);
if gray > 128 then //全局阀值
begin
b[x * 3] := 255;
b[x * 3 + 1] := 255;
b[x * 3 + 2] := 255;
end
else
begin
b[x * 3] := 0;
b[x * 3 + 1] := 0;
b[x * 3 + 2] := 0;
end;
end;
end;
上面的代码将24位图二值化后保存的图片文件体积太大。
BitImg.Picture.Bitmap.PixelFormat := pf1bit;
这样保存成1位图后,颜色太暗了。
如何保持二值化后的图像亮度,并大大减小保存后的bmp图片文件所占空间??? 请高手指点 谢谢
begin
b := BitImg.Picture.Bitmap.ScanLine[y];
for x := 0 to BitImg.Picture.Bitmap.Width - 1 do
begin
//一个象素点三个字节
Gray := Round(b[x * 3 + 2] * 0.3 + b[x * 3 + 1] * 0.59 + b[x * 3] * 0.11);
if gray > 128 then //全局阀值
begin
b[x * 3] := 255;
b[x * 3 + 1] := 255;
b[x * 3 + 2] := 255;
end
else
begin
b[x * 3] := 0;
b[x * 3 + 1] := 0;
b[x * 3 + 2] := 0;
end;
end;
end;
上面的代码将24位图二值化后保存的图片文件体积太大。
BitImg.Picture.Bitmap.PixelFormat := pf1bit;
这样保存成1位图后,颜色太暗了。
如何保持二值化后的图像亮度,并大大减小保存后的bmp图片文件所占空间??? 请高手指点 谢谢
...全文
相关推荐
灰度图像经典二值化Matlab代码
通常,这些代码会包含图像读取、预处理、阈值计算、二值化处理以及结果展示等步骤。使用者只需按照说明导入示例图片或者自己的灰度图像,调用相应的函数,即可得到二值化处理后的结果。
解决使用MATLAB进行图像二值化后图像还是有灰度值问题
最近使用MATLAB对JPEG格式的灰度图像进行二值化,二值化后的图像非0即1(1代表的是白色,0代表的是黑色),我按照图像原本的名字保存,所以格式也没变,但是再次打开图像时还是存在非01的灰度值。 ...
VC++环境下BMP图像处理:像素提取与二值化实战
在当今数字化世界,图像文件格式众多,但BMP(位图图像文件)格式无疑是一个基础且广泛使用的标准。BMP文件格式由微软公司开发,主要用于Windows操作系统中,其文件后缀名通常为.bmp。图像二值化是一个将图像中像素值的范围缩减到两个值(通常是0和1或者黑色和白色)的过程。这个过程极大地简化了图像数据,并且有助于提高图像处理的速度,因为处理两个值比处理多值数据要快得多。在二值化过程中,原图中每个像素点的灰度值会根据特定的阈值被转换为黑或白。
图像处理,C++,C,语言。二值化,灰度化
最后,处理后的图像需要保存回BMP文件。这同样涉及到文件头的更新和数据的写入。需要注意的是,BMP文件的存储顺序通常是倒序的,即从下到上,从右到左。
打开BMP图片,并进行二值化处理
总结来说,打开BMP图片并进行二值化处理涉及的知识点包括:BMP文件格式的理解、图像像素数据的读取与解析、二值化算法的实现以及图像的显示。理解这些概念和技术对于进行图像处理和分析是非常重要的。


GAME,图形处理/多媒体
