opencv 学习笔记(七) 灰度变换

本文介绍灰度变换的基础知识,包括灰度变换的概念、作用及方法,并详细解释了如何对彩色图像进行灰度化处理,同时提供了灰度线性和非线性变换的具体实现案例。


一、灰度变换概念

在图像预处理中,图像的灰度变换是图像增强的重要手段,灰度变换可以使图像对比度扩展,图像清晰,特征明显,灰度变换主要利用点运算来修正像素灰度,由输入像素点的灰度值确定相应输出点的灰度值,是一种基于图像变换的操作。

二、灰度变换的作用

1.改善图像是质量,显示更多的细节,提高图像的对比度
2.有选择的突出图像感兴趣的特征或者抑制图像中不需要的特征
3.可以有效的改变图像的直方图的分布,使像素的分布更加均匀

三、灰度变换的方法

1.线性灰度变换
2.非线性灰度变换(对数变换,幂律变换(伽马变换))

灰度化

一、灰度的概念

在数字图像中,像素是基本的表示单位,各个像素的亮安程度用灰度值来标识,只含亮度信息,不含色彩信息的图像称为灰度图像,对于单色图像,它的每个像素的灰度值用【0,255】区间的整数表示,即图像分为256个灰度等级,对于彩色图像,他的每个像素由R,G,B三个单色调配而成,如果每个像素的R,G,B完全相同,也就是R=G=B=D,该图像就是灰度图像,其中D被称为各个像素的灰度值。


二、对彩色图进行灰度化

1.加权平均值法

D=0.299R+0.587G+0.114*B

代码如下:

#include<iostream>
#include<opencv.hpp>
using namespace std;
using namespace cv;


int main()
{
   
   
	Mat img, img2;
	img = imread("猫1.jpg");
	imshow("原图", img);
	img2.create(img.size(), 0);
	for (int i = 0; i < img.rows; i++)
	{
   
   
		for (int j = 0; j < img.cols; j++)
		{
   
   
			img2.at<uchar>(i, j) = saturate_cast<uchar>(0.114*img.at<Vec3b>(i, j)[0] + 0.587*img.at<Vec3b>(i, j)[1] + 0.299*img.at<Vec3b>(i, j)[2]);
		}
	}
	imshow("经验公式", img2);
	waitKey(0);
}

效果如下:
在这里插入图片描述

2.取最大值

代码如下:

int main()
{
   
   
	Mat img, img2;
	img = imread("猫1.jpg");
	imshow("原图", img);
	img2.create(img.size(), 0)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浅念念52

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值