灰度图像拉伸方法

目录

方法原理

公式如下

代码实现


方法原理

1.找到该灰度图像灰度值的最大值(max_value)和最小值(min_value)

2.确定拉伸后的灰度范围HistogramStrench_min~HistogramStrench_max

3.遍历灰度图像(image)得到拉伸后的灰度图像

公式如下

image[i] = HistogramStrench_min + (((image[i] - min_value) * (HistogramStrench_max - HistogramStrench_min)) / (max_value - min_value));

代码实现


void histogram_stretch(unsigned char* img, int h, int w)
{
	int i, j;
	int max_value = img[0];
	int min_value= img[0];
    int HistogramStrench_min = 20;//拉伸后的目标灰度
    int HistogramStrench_max = 240;//拉伸后的目标灰度
	unsigned char* tempimg = (unsigned char*)malloc(h*w);
	memcpy(tempimg, img, h*w);

	for (i = 0; i < h; i++)
	{
		for (j = 0; j < w; j++)
		{
			//找出像素的最大值和最小值
			if (max_value < tempimg[i*w + j])
				max_value = tempimg[i*w + j];
			else if (min_value > tempimg[i*w + j])
				min_value = tempimg[i*w + j];

		}
	}
 	for (i = 0; i < h; i++)
	{
		for (j = 0; j < w; j++)
		{
			tempimg[i*w + j] =  HistogramStrench_min + (((img[i] - min_value) * (HistogramStrench_max - HistogramStrench_min)) / (max_value - min_value));
		}
	}
	memcpy(img, tempimg, h*w);
	free(tempimg);
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值