matlab 彩色图像转化成灰度图像,灰度图像降低灰度级

灰度级数k,k=2^b,称该图像为b比特图像。

降低灰度级数是靠2的幂次方

网上代码:https://blog.csdn.net/silence2015/article/details/68927360

function changereduce_factor(imgpath,reduce_factor)
% Write a computer program capable of reducing the number of intensity levels in an image from 256 to 2,
% in integer powers of 2. The desired number of intensity levels needs to be a variable input to your program.
    f = imread(imgpath);
    if reduce_factor<0
        reduce_factor=0
    else if reduce_factor>8
            reduce_factor=8
        end
    end

    dfactor=uint8(2^reduce_factor);
    f_trans=(f/dfactor)*dfactor;
    subplot(1,2,1);
    imshow(f);
    subplot(1,2,2);
    imshow(f_trans);

end

其中reduce_factor=8表示原图像是一张8bit图像,有灰度级dfactor是256,

所以(f/dfactor)取整只有两个结果0或者1,然后再乘灰度级就变成了黑白图片(只有两个灰度级)

那么当reduce不等于比特图像那个值的时候会出现什么结果,如果大于,那么图像是全黑的0,小于的话取整运算的结果将不只是0,1,还会出现更多数

但是还是小于比特图像数,也就做到了将灰度值降低。

pic=imread(‘pic/coltogray/1.jpg‘);
##gray_pic=rgb2gray(pic);
##figure(1)
##imshow(gray_pic)

[x,y,z]=size(pic);

graypic=zeros(x,y);

level=4

dfactor=uint8(2^level)
max1=0;
min1=0;
for i=1:x
  for j=1:y
    sum=0;
    for k =1:z
      sum=sum+pic(i,j,k)/3;
    end
    graypic(i,j)=sum;
    graypic1(i,j)=(sum/dfactor)*dfactor;
  end
end

graypic=uint8(graypic);
graypic1=uint8(graypic1);

figure(1);
imshow(graypic);
figure(2);
imshow(graypic1);
%将三维图像压缩至一维即可以看作是灰度图像?

原文地址:https://www.cnblogs.com/wangtianning1223/p/11145441.html

时间: 2024-08-30 02:01:50

matlab 彩色图像转化成灰度图像,灰度图像降低灰度级的相关文章

TMS320DM642中一种彩色图像转化成灰度图像算法

摘要:数字图像中,一般将其他格式图像转化成灰度图像,以使后续的图像计算量变少一些. 平台:Windows10+CCS5.5+TMS320DM642 实现: /* ======================================================================== */ /* Copyright 2006 by Wintech Digital System Technology Corp. */ /* All rights reserved. Prope

Opencv——彩色图像转成灰度图像

// PS_Algorithm.h #ifndef PS_ALGORITHM_H_INCLUDED #define PS_ALGORITHM_H_INCLUDED #include <iostream> #include <string> #include "cv.h" #include "highgui.h" #include "cxmat.hpp" #include "cxcore.hpp" usi

怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图?

  分类: OpenCV [Q1]怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图? 进行灰度化,IplImage* pImg = cvLoadImage( "C:\\1.bmp", 0 ); 这样图像已经灰度化,然后调用cvThreshold(image, image, 125, 255, CV_THRESH_BINARY); 就可以了,125那里是你所用的阈值,这就是最简单的二值化,你要用ostu,或者别的高级一点的,就要自己写函数了   // Truncate v

1、AJAX里面status的值代表什么 2、get post 的区别 3、怎样把对象转化成字符串 4、闭包、继承、原型、原型链 5 、http传输协议 6、arguments是什么

1.AJAX里面status的值代表什么     在JavaScript里面写AJax的时,最关键的一步是对XMLHttpRequest对象建立监听,即使用"onreadystatechange"方法.监听的时候,要对XMLHttpRequest对象的请求状态进行判断,通常是判断readyState的值为4且status的值为200或者304时执行我们需要的操作.以下记录了一些常用readState以及status的值及其含义 readyState 属性表示Ajax请求的当前状态.它的

QQ群控如何将潜在的粉丝流量转化成强大的购买力?

QQ拥有庞大的使用群体,这就意味着它拥有庞大的流量基础,互联网时代,流量为王,围绕QQ的营销应运而生,但是如何将潜在的粉丝流量转化成强大的购买力,却是微商运营者们一直以来最头疼的问题.有了转化才能拥有生意,得粉丝者得天下.针对微商市场的这一需求,流量星球QQ群控系统应运而生,实现粉丝流量的精准转化,使用过流量星球QQ群控的都说效果好.流量星球QQ群控是如何实现庞大的转化量的?首先,批量控制几千个QQ号,一台电脑群控上百台手机,不仅节省了人力成本,还提高了营销效率. 其次,一键自动添加好友,设置目

iOS开发之---将时间戳,转化成时间字符串。

1.将一个NSDate,转化成时间字符串. NSDate *date = [NSDate date]; NSDateFormatter *fmt = [[NSDateFormatter alloc] init]; fmt.dateFormat = @"yyyy-MM-dd"; NSString *dateStr = [fmt stringFromDate:date];

将华氏温度转换成摄氏温度或将摄氏温度转化成华氏温度。(需考虑多种不合法的情况尽量转化为合法的)

//华氏温度与摄氏温度转换,编写一个程序,将华氏温度转换成摄氏温度或将摄氏温度转化成华氏温度. //要求程序运行时从控制台读入温度值及单位,并输出另一种温度值及单位,例如:若用户输入27 C则 //程序输出 81F:若用户输入96 F,则程序输出36 C(其中C代表摄氏温度,F代表华氏温度),华氏温度与摄氏温度转化的公式为: //C = 5 (F - 32) / 9 //F = 9 C / 5 + 32 //要求输入的温度值是整数,输出的温度值也是四舍五入后的整数. package 第三天_练习

JSON数据转化成模型

JSON数据转化成模型 // 1.创建url NSURL *url = kSUNUrl(@"video"); // 2.创建request NSURLRequest *request = [NSURLRequest requestWithURL:url]; // 3.发送请求数据 NSOperationQueue *queue = [NSOperationQueue mainQueue]; [NSURLConnection sendAsynchronousRequest:request

如何将别人的知识转化成自己的知识?

不传授具体的知识,只告诉你获得知识的方法.将别人的知识转化成自己的知识,成就你的丰盈人生! 由知识管理中心(Knowledge Management Center)基于最新知识管理理论和实践.认知与学习理论,结合互联网对于信息和知识整合.传播.创造的影响所开发的"KMC高效学习方法网络课程"已经在众多同学学习的基础上.结合多位专家的建议进行了重大升级. [课程名称]KMC 高效学习方法网络课程–互联网思维下的高效学习方法 [课程导师]田志刚 知名知识管理专家.个人知识管理畅销书<