图像处理之半色调化

本文介绍了两种图像处理技术:半色调化(通过图案法实现)和抖动算法。提供了C++代码示例,展示了如何将灰度图像转换为二值图像,以实现视觉上的半色调效果。在主函数中,读取并处理了名为'circle.jpg'的灰度图像,最后显示了处理结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include "cv.h"
#include "highgui.h"

using namespace cv;

#define PI 3.1415926
#define RADIAN(angle) ((angle)*PI/180.0)

uchar BayerPattern[8][8]={0,32,8,40,2,34,10,42,
						  48,16,56,24,50,18,58,26,
						  12,44,4,36,14,46,6,38,
						  60,28,52,20,62,30,54,22,
						  3,35,11,43,1,33,9,41,
						  51,19,59,27,49,17,57,25,
						  15,47,7,39,13,45,5,37,
						  63,31,55,23,61,29,53,21};


//图案法 半色调化
Mat LimbPatternM3(Mat& mat)
{
	int M=mat.rows;
	int N=mat.cols;

	Mat ret(M,N,CV_8U);
	for(int i=0;i<M;i++)
	{
		for(int j=0;j<N;j++)
		{
			uchar num=mat.ptr<uchar>(i)[j];
			if((num>>2)>BayerPattern[i&7][j&7])
				ret.ptr<uchar>(i)[j]=255;
			else
				ret.ptr<uchar>(i)[j]=0;
		}
	}
	return ret;
}

//抖动法
void Steinberg(Mat& mat)
{
	int M=mat.rows;
	int N=mat.cols;

	Mat temp(M,N,CV_32S);
	for(int i=0;i<M;i++)
		for(int j=0;j<N;j++)
			temp.ptr<int>(i)[j]=mat.ptr<uchar>(i)[j];
	

	for(int
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值