打印

(转帖)图像增强算法

[复制链接]
3865|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
五谷道场|  楼主 | 2012-1-18 20:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
算法一、图像反相算法
将图像按像素进行求反,取得类似照相底片效果。求反处理的图像与原始图黑白颠倒
可以看清原始图中灰黑区域的情况。求反的图像一般用于数字图像的初步处理。

   
DA表示输入图像的灰度,DB表示输入图像的灰度。灰度变换方程为:

DB=255-DA

在视频显示任务的循环中,程序首先将视频数据从输入缓冲区读入自己开设的临时
图像处理缓冲区,再在临时图像处理缓冲区上进行处理,处理后的数据再输出到输出缓冲区。
图像的采集分为奇偶场采集,即将图像的奇数行作为一场数据,偶数行作为另
一场数据。对像素处理时,一般需分为奇数行与偶数行处理。在下面的程序中奇数行是第一场数据放在临时图像处理缓冲区的前半部。
void videoReverse()

{

int i,j;

//方框内奇数行

for(i=intALines;i<intDLines;i++) //行数

{


for(j=intAPixels;j<intDPixels;j++) //
像素个数/每行


{



*(Uint8 *)(tempYbuffer + i*numPixels + j) =
0xFF-*(Uint8 *)(tempYbuffer + i*numPixels + j);



}


}


//方框内偶数行

for(i=numLines/2+intALines;i<numLines/2+intDLines;i++)//行数

{


for(j=intAPixels;j<intDPixels;j++) //
像素个数/每行


{



*(Uint8 *)(tempYbuffer + i*numPixels + j) =
0xFF-*(Uint8 *)(tempYbuffer + i*numPixels + j);



}


}


}

相关帖子

沙发
五谷道场|  楼主 | 2012-1-18 20:06 | 只看该作者
算法二、图像灰度处理算法
灰度图(gray-scale imgc5)是指将图像按照灰度等级的数目来划分后形成的图像。灰度模式最多使用256级灰度来表现图像,图像中的每个像素有一个0(黑色)到255(白色)之间的亮度值。实现灰度图现实的方法比较简单,将UV分量的值赋为0X80Y分量值保持不变即可。
以下是处理算法的具体函数,用下面的算法处理函数把上面完整程序里的相关算法处理函数替换掉,就可实现图像处理的效果。
/*消去彩色*/

void removeColor()

{

int i,j;

//方框内奇数行

for(i=intALines;i<intDLines;i++)//行数

{


for(j=intAPixels/2;j<intDPixels/2;j++) //
像素数/每行


{



*(Uint8 *)(tempCbbuffer + i * (numPixels >> 1) + j) =
0x80;



*(Uint8 *)(tempCrbuffer + i * (numPixels >> 1) + j) =
0x80;



}


}


//方框内偶数行

for(i=numLines/2+intALines;i<numLines/2+intDLines;i++)//行数

{


for(j=intAPixels/2;j<intDPixels/2;j++) //
像素数/每行


{



*(Uint8 *)(tempCbbuffer + i * (numPixels >> 1) + j) =
0x80;



*(Uint8 *)(tempCrbuffer + i * (numPixels >> 1) + j) =
0x80;



}


}


}

使用特权

评论回复
板凳
五谷道场|  楼主 | 2012-1-18 20:06 | 只看该作者
算法三、图像阈值变换算法
灰度的阈值变换可以将一幅灰度图像转换成黑白二值图像。它的操作过程是先由用户指
定一个阈值,如果图像中期权像素的灰度值小于该阈值,则将该像素的灰度值设置为0,否则灰度值设置为255
以下是处理算法的具体函数,用下面的算法处理函数把上面完整程序里的相关算法处理函数替换掉,就可实现图像处理的效果。

/*****进行阈值分割处理*********/
void threshold()

{

int i,j;

//方框内奇数行

for(i=intALines;i<intDLines;i++)//行数

{


for(j=intAPixels;j<intDPixels;j++) //
像素数/每行


{



*(Uint8 *)(tempYbuffer + i*numPixels + j) = *(Uint8 *)(tempYbuffer + i*numPixels + j)<intThreshold?0x00:0xFF;



}


}


//方框内偶数行

for(i=numLines/2+intALines;i<numLines/2+intDLines;i++)//行数

{


for(j=intAPixels;j<intDPixels;j++) //
像素数/每行


{



*(Uint8 *)(tempYbuffer + i*numPixels + j) = *(Uint8 *)(tempYbuffer + i*numPixels + j)<intThreshold?0x00:0xFF;



}


}


}

使用特权

评论回复
地板
五谷道场|  楼主 | 2012-1-18 20:07 | 只看该作者
算法三、图像阈值变换算法
灰度的阈值变换可以将一幅灰度图像转换成黑白二值图像。它的操作过程是先由用户指
定一个阈值,如果图像中期权像素的灰度值小于该阈值,则将该像素的灰度值设置为0,否则灰度值设置为255
以下是处理算法的具体函数,用下面的算法处理函数把上面完整程序里的相关算法处理函数替换掉,就可实现图像处理的效果。

/*****进行阈值分割处理*********/
void threshold()

{

int i,j;

//方框内奇数行

for(i=intALines;i<intDLines;i++)//行数

{


for(j=intAPixels;j<intDPixels;j++) //
像素数/每行


{



*(Uint8 *)(tempYbuffer + i*numPixels + j) = *(Uint8 *)(tempYbuffer + i*numPixels + j)<intThreshold?0x00:0xFF;



}


}


//方框内偶数行

for(i=numLines/2+intALines;i<numLines/2+intDLines;i++)//行数

{


for(j=intAPixels;j<intDPixels;j++) //
像素数/每行


{



*(Uint8 *)(tempYbuffer + i*numPixels + j) = *(Uint8 *)(tempYbuffer + i*numPixels + j)<intThreshold?0x00:0xFF;



}


}


}

使用特权

评论回复
5
五谷道场|  楼主 | 2012-1-18 20:08 | 只看该作者
算法五、灰度窗口变换算法

灰度窗口变换(slicing)是将某一区间的灰度级和其他部分(背景)分开。

灰度窗口变换有两种,一种是清除背景的,一种是保留背景的。前者把不在灰度窗口范围内的像素都赋值为0,在灰度窗口范围内的像素都赋值为255,这也能实现灰度图的二值化;后者是把不在灰度窗口范围内的像素保留原灰度值,在灰度窗口范围内的像素都赋值为255。本实验采用的是清除背景的灰度窗口变换。灰度窗口变换可以检测出在某一灰度窗口范围内的所有像素,是图像灰度分析中的一个有力工具。



在视频显示任务的循环中,程序首先将视频数据从输入缓冲区读入自己开设的临时图像处理缓冲区,再在临时图像处理缓冲区上进行处理,处理后的数据再输出到输出缓冲区。

在屏幕中央开辟一个矩形区域,对这个区域内的图像进行处理。

以下是处理算法的具体函数,用下面的算法处理函数把上面完整程序里的相关算法处理函数替换掉,就可实现图像处理的效果。

/*灰度的窗口变换*/
void windowTrans()

{

         int i,j,intTemp;

         //方框内奇数行

         for(i=intALines;i<intDLines;i++)//行数

         {

             for(j=intAPixels;j<intDPixels;j++) //像素数/每行

             {                 

            intTemp = *(Uint8 *)(tempYbuffer + i*numPixels + j);

            if(intTemp<intL)

                     *(Uint8 *)(tempYbuffer + i*numPixels + j) = 0x00;

            else if(intTemp>intU)

                *(Uint8 *)(tempYbuffer + i*numPixels + j) = 0xFF;

            else

                     *(Uint8 *)(tempYbuffer + i*numPixels + j) = intTemp;                       

                   }        

         }

         //方框内偶数行

         for(i=numLines/2+intALines;i<numLines/2+intDLines;i++)//行数

         {

             for(j=intAPixels;j<intDPixels;j++) //像素数/每行

             {                 

            intTemp = *(Uint8 *)(tempYbuffer + i*numPixels + j);

            if(intTemp<intL)

                     *(Uint8 *)(tempYbuffer + i*numPixels + j) = 0x00;

            else if(intTemp>intU)

                *(Uint8 *)(tempYbuffer + i*numPixels + j) = 0xFF;

            else

                     *(Uint8 *)(tempYbuffer + i*numPixels + j) = intTemp;                       

                   }        

         }                 

}

使用特权

评论回复
6
huigoushang| | 2012-1-19 00:31 | 只看该作者
值得借鉴一下

使用特权

评论回复
7
G21372| | 2012-1-19 00:47 | 只看该作者
好全啊

使用特权

评论回复
8
张鑫鑫鑫| | 2012-1-19 19:39 | 只看该作者
有帮助,楼主辛苦了

使用特权

评论回复
9
一品人生| | 2012-1-19 19:46 | 只看该作者
好家伙,这么多内容

使用特权

评论回复
10
yangguangaisha| | 2012-1-19 19:54 | 只看该作者
收藏了,楼主辛苦

使用特权

评论回复
11
gdmt0601| | 2012-10-24 16:30 | 只看该作者
楼主还在吗?有些问题我想请教您!能否给个联系方式,我QQ853771773   多谢指教!不胜感激

使用特权

评论回复
12
gdmt0601| | 2012-10-24 16:32 | 只看该作者
我现在准备连续显示两幅图,先显示原始图像,再接着显示灰度化后的图像,可是在显示灰度化图像的时候,图像就不稳定,屏幕上有重影,请问这是什么原因呢?

使用特权

评论回复
13
happy啦啦啦| | 2012-10-24 16:47 | 只看该作者
图像处理这方面接触的比较少,先看看再说

使用特权

评论回复
14
meng219902| | 2012-10-24 16:53 | 只看该作者
i LIKE !

使用特权

评论回复
15
gibenlin| | 2012-10-24 17:44 | 只看该作者
收藏

使用特权

评论回复
16
jxmzzr| | 2012-10-24 18:53 | 只看该作者
人类感知的外界信息80%以上是通过视觉得到的,资料很有借鉴意义,感谢分享

使用特权

评论回复
17
vivilzb1985| | 2012-10-25 12:00 | 只看该作者
感谢分享,很好的资料的,我先借鉴啦

使用特权

评论回复
18
zhongxon| | 2012-10-25 12:13 | 只看该作者

1

看看这样,Retinex,就是运算量太大了

使用特权

评论回复
19
五谷道场|  楼主 | 2012-10-25 14:12 | 只看该作者
我现在准备连续显示两幅图,先显示原始图像,再接着显示灰度化后的图像,可是在显示灰度化图像的时候,图像就不稳定,屏幕上有重影,请问这是什么原因呢? ...
gdmt0601 发表于 2012-10-24 16:32
找到问题了没,是不是原始图像的影响呢?

使用特权

评论回复
20
爱之翼V| | 2012-10-25 15:18 | 只看该作者
嘿嘿...今天来巧了,正想这事呢.很有启发。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7647

主题

9805

帖子

11

粉丝