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

摘要:数字图像中,一般将其他格式图像转化成灰度图像,以使后续的图像计算量变少一些。

平台:Windows10+CCS5.5+TMS320DM642

实现:

/* ======================================================================== */
/*  Copyright 2006 by Wintech Digital System Technology Corp.               */
/*  All rights reserved. Property of Texas Instruments Incorporated.        */
/*  Restricted rights to use, duplicate or disclose this code are           */
/*  granted through contract.	                                            */
/* ======================================================================== */
/*========  头文件引用===========*/
#include "stdio.h"

/*============= 工作变量定义======*/
unsigned char *pr_R;    //指针定义
unsigned char *pr_G;    //指针定义
unsigned char *pr_B;    //指针定义
unsigned char *Gray;    //指针定义

//说明:定义数据存放变量
#pragma        DATA_SECTION(RGB_IMG,"data");
int  RGB_IMG[40000];

#pragma        DATA_SECTION(R_IMG,"data");
unsigned char  R_IMG[20000];
#pragma        DATA_SECTION(G_IMG,"data");
unsigned char  G_IMG[20000];
#pragma        DATA_SECTION(B_IMG,"data");
unsigned char  B_IMG[20000];

#pragma        DATA_SECTION(Gray_IMG,"data");
unsigned char  Gray_IMG[20000];

void RGB2Gray();

///////////////////////////////////////////////////////////////////////////////////////////////////////////////
//使用说明:
//   1. 本程序可以在Simulator下运动;
//   2. 程序编译、链接、加载成功后,先
//      执行File/data/load,将要进行颜色转换的图像数据从RGB_peppers96x128.dat
//     (说明:*.dat格式,内部存放了某图像各像素的RGB颜色值)加载入数据存储器存储地址RGB_IMG中
//   3. 数据加载成功后,再Debug/Go Main, 一步一步运行程序
///////////////////////////////////////////////////////////////////////////////////////////////////////////////

/*================= 主程序 ================*/
main()
{
	int n,flg,imgH,imgW;
    int *ptr;
/*=========== 初始化 ==========*/
	flg=3;      //用于选择灰度化方法
	imgH=96;    //图像的高与宽,因为数据文件所对应的图像高与宽就是96,128
	imgW=128; 

	//指针指向数组
	pr_R=R_IMG;
	pr_G=G_IMG;
	pr_B=B_IMG;
	Gray=Gray_IMG;

    //1 把RGB三个通道的数据分别放到相应的数组中
    ptr=RGB_IMG;
    for (n=0;n<imgH*imgW;n++)
       *pr_R++=*ptr++;
    for (n=0;n<imgH*imgW;n++)
       *pr_G++=*ptr++;
    for (n=0;n<imgH*imgW;n++)
       *pr_B++=*ptr++;
    //说明:在此暂停,可看原始RGB彩色图像 

	//指针指向数组
	pr_R=R_IMG;
	pr_G=G_IMG;
	pr_B=B_IMG;
	Gray=Gray_IMG;

    //2 调用子程序,进行彩色图像变换成灰度图像
    while (1)
    { 

       RGB2Gray(pr_R,pr_G,pr_B,Gray,imgW,imgH,flg);

     }
    //说明:在此暂停,可看变换后的灰度图像 

}

/*============== 子程序 =============*/
void RGB2Gray
(    unsigned char   *R,      /* 输入彩色图像的R分量   */
     unsigned char   *G,      /* 输入彩色图像的G分量   */
     unsigned char   *B,      /* 输入彩色图像的B分量   */
     unsigned char   *Gray,   /* 输出的灰度图像         */
     int cols, int rows,       /* 图像的宽度与高度      */
     int flg                  /* 控制标志,当其为1、2、3时,分别表示采用方法1、2和3进行灰度化处理 */
)
{
	int  i;  //定义局部变量

	//采用循环的方式对图像中的每个像素进行灰度化
	for (i = 0; i < cols*rows; i++)
	{
	    if (flg==1)              //方法1: 加权平均法
	       *Gray++=(unsigned char)(0.3*(*R++)+ 0.59*(*G++)+ 0.11*(*B++));
	    else if (flg==2)         //方法2: 简单算术平均法
	       *Gray++=(unsigned char)(( (*R++)+ (*G++)+ (*B++))/3);
	    else                     //方法3: 最大值法
	    {
	         Gray[i]= (unsigned char)R[i];
	         if (G[i]>Gray[i])
	             Gray[i]=(unsigned char)G[i];
	         if (B[i]> Gray[i])
	             Gray[i]=(unsigned char)B[i];
	    }
	}
}
/* ======================================================================== */
/*             Copyright (c) 2012 LDX Digital System Technology Corp.   */
/*                         All Rights Reserved.                             */
/* ======================================================================== */

 

导入数据 TOOL ->Load Memory

查看原图 TOOLS->Image Analyzer

原图配置

原图效果

处理后的图配置

处理后图的效果

原文地址:https://www.cnblogs.com/dafang/p/8253168.html

时间: 2024-07-31 21:35:46

TMS320DM642中一种彩色图像转化成灰度图像算法的相关文章

JS中如何将字符串转化成日期 日期格式化方法

<!--     /**     * 对Date的扩展,将 Date 转化为指定格式的String     * 月(M).日(d).12小时(h).24小时(H).分(m).秒(s).周(E).季度(q) 可以用 1-2 个占位符     * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)     * eg:     * (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S") ==> 2006-0

彩色图转化成灰度图

对于图像由彩色图转化为灰度图有三种方法分别为 加权法 均值法 最大值法! 加权法就是  GRAY==0.3*R+0.59*G+0.11*B 均值法就是 GRAY==(R+G+B)/3 最大值发就是  max(R,G,B) A=imread('D:\lena.BMP');r=double(A(:,:,1));g=double(A(:,:,2));b=double(A(:,:,3));[m,n]=size(r);bw=zeros(m,n);bw=0.3.*r+0.59.*g+0.11.*b;subp

税号输入框 将input框中的输入自动转化成半角大写

这两天出了这么一个需求,输入税号的时候,需要自动将其转化为半角大写,并且阻止标点符号中文汉字的输入.(下面会有:全半角转换.文本框选中.光标位置判断.设置光标位置 这些内容) 然后我就开始了慢慢查找资料之路. 首先查了全半角的区别以及如何转化. var str = "中文;:a"; for (var i = 0; i < str.length; i++) { if (str[i].match(/[\u0000-\u00ff]/)) { console.log("半角字符

XML中的非法字符转化成实体

问题 如果XML有非法字符比如 "·",或者HTML标签<br/>.XML在解析的过程中就会出错.就无法正常解析,或者把xml反射成实体. 有些字符,像(<)这类的,对HTML(标准通用标记语言下的一个应用)来说是有特殊意义的,所以这些字符是不允许在文本中使用的.要在HTML中显示(<)这个字符,我们就必须使用实体字符. 解决的办法 如果这些非法字符或者HTML标签不是我们需要的可以用striing.Replace("非法字符","

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 2

Excel中如何把时间转化成文本

把时间数据转化为不带分隔符的数据. 公式如下 =TEXT(A:A,"yyyymmdd"): =TEXT(A:A,"yyyymm"): text函数第一个对象目标(需要转化的时间),第二个对象是转化后的格式(yyyy代表年份,mm代表月份,dd代表天数) 如图 2 下面是函数的实际操作情况. 很简单的函数,但是要明白函数的意义,而且转化后是文本 3 那么如何转化为时间格式呢? 只需要把格式转化一下: =TEXT(A:A,"hh:mm:ss") 第一

如何将一个文本中的最后一行转化成第一行

问题: 两个文件   1.txt和2.txt 1.txt的内容是:aa  1   2 bb  2   3 cc   3   4 2.txt aa   2   1 bb   8   2 cc    4   4 dd   5   5 join  1.txt   2.txt的输出是:aa  1  2  2  1 bb  2  3  8  2 cc   3  4  4  4 我如果现在想把cc  3  4  4  4提到第一行,即变成这样:cc   3   4   4   4 aa   1   2   

怎么样用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

在实际项目中实现把swf资源里面的MC进行转化成按钮,实现代码的复用

下面是前不久一个游戏项目中的一小部分内容,拿出来只是为了说明,用AS3对加载进程序中swf内容进行封装变换处理 下面是这个例子,只不过不完整... package com.ctrlcc.sanguo.view { /** * C-公会转盘-视图-主视图 */ public class ZhuanPanView extends Window { private var _panel:MovieClip; private var _closeBtn:EButton; private var _buy