C语言获取pgm图片的灰度,我有一个PGM格式图像与8bpp 1024 X 1024大小,并需要从它计算GLCM(灰度共生矩阵)...

GLCM通常是一个非常计算密集型算法。它遍历每个像素,为每个邻居。即使是C++图像处理库也有这个问题。

然而,GLCM很适合并行(多线程)实现,因为每个参考像素的计算都是独立的。

关于使用锁定位和解锁位,请参阅下面的示例代码。有一点需要记住的是,为了优化原因,图像可以被填充。另外,如果您的图像具有不同的位深度或多个通道,则需要相应地调整代码。

BitmapData data = image.LockBits(new Rectangle(0, 0, width, height),

ImageLockMode.ReadOnly, PixelFormat.Gray8);

byte* dataPtr = (byte*)data.Scan0;

int rowPadding = data.Stride - (image.Width);

// iterate over height (rows)

for (int i = 0; i < height; i++)

{

// iterate over width (columns)

for (int j = 0; j < width; j++)

{

// pixel value

int value = dataPtr[0];

// advance to next pixel

dataPtr++;

// at the end of each column, skip extra padding

if (rowPadding > 0)

{

dataPtr += rowPadding;

}

}

image.UnlockBits(data1);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值