荣耀手机官方网站首页,专业的网站建设哪家好,做网站设计的论文中摘要怎么写,江苏省建设通官方网站图像灰度级数我们见得最多的就是256了#xff0c;如果想调整它的灰度级数#xff0c;我们可以使用图像库的imadjust函数来作出调整#xff0c;比如讲256个灰度级变成2个灰度级#xff08;也就是二值图了#xff09;。再举一个例子#xff0c;原来一幅256个灰度级的图像如果想调整它的灰度级数我们可以使用图像库的imadjust函数来作出调整比如讲256个灰度级变成2个灰度级也就是二值图了。再举一个例子原来一幅256个灰度级的图像如果我们把它的灰度级重新调整为4那么调整后这幅图像的灰度值应该就是有4个值0,85,170,255。即这幅图只能用这四个值来表示。那调整灰度级数的imadjust函数该怎么实现呢 数字图像处理课刚好布置了一个作业就是用代码实现灰度级调整。我在这里贴出我的代码供大家参考参考。 说一说我的思路比如一个灰度级256的图调整灰度为4第一步我们就需要求出每个block的大小也可以理解为256应该分为几个区间。256 / (4-1) 3个区间每个区间size是85。然后我们再求出每个区间的中值如果原图pixel值比这个中间值大那他就属于这个区间的最大值否则它就是属于上一个区间的最大值。 #include opencv2/highgui/highgui.hpp
#include opencv2/imgproc/imgproc.hpp
#include iostreamusing namespace std;
void quantizie(cv::Mat input_img, int level);#define LEVEL 2int main()
{cv::Mat img cv::imread(41.png, 0);cv::imshow(src, img);quantizie(img, LEVEL);return 0;
}uchar get_value(int level, uchar v)
{int block_num level - 1;int block_size 256 / block_num; for (int i 1; i block_num; i){if (v block_size * i){continue;}int mid_value block_size * i / 2;int left block_size * (i - 1);int right block_size * i - 1;if (v mid_value){return left;}else{return right;}}return v;
}void quantizie(cv::Mat input_img, int level)
{cv::Mat output_img input_img.clone();output_img.setTo(0);for (int i 0; i output_img.rows; i){uchar* p1 input_img.ptruchar(i);uchar* p2 output_img.ptruchar(i);for (int j 0; j output_img.cols; j){p2[j] get_value(level, p1[j]);//p2[j] (p1[j] / range) * range;}}cv::imshow(quantize, output_img);cv::imwrite(quantize.png, output_img);cv::waitKey();
} 灰度级256 灰度级128 灰度级32 灰度级8 灰度级4 灰度级2 转载于:https://www.cnblogs.com/skyfsm/p/7586836.html