要求:用vhdl语言设计一个图像处理系统,可完成以下功能1.嵌入功能:可将一幅256x256的彩色图像转为8位灰度图像,然后在该灰度图像的LSB比特面随机嵌入三个不同的二值序列;最后,将嵌入水印序列的灰度图像恢复为彩色图像。2.检测功能:输入任意彩色图像,可从对应灰度图像的LSB平面检测上述三个序列。3.三个序列为序列1:01101序列2:10101序列3:110014. 输入端口包括三个坐标值信号,分别作为三个序列嵌入的起始位置5. 建立序列检测状态机,实现图像中三个序列的检测。注:嵌入是指用指定的序列替代图像中原来的比特序列LSB平面是指8bit灰度图像每个像素的最低位比特构成的二值矩阵
我不会VHDL,关于这个题目的一点想法,可以参考下:
1. 首先猜测下你们老师的意图:一幅彩色图片,如果只对LSB平面(灰度值最低比特位所构成的平面)做更改的话,那对整个彩色图片的影响是很小的,
因为是最低比特位了,对整个值的影响也就加1或减1的区别。既然改变LSB平面的影响小,那就可以充分发挥它的用途,比如加入指定的序列(这个可以防伪,貌似),
比如在LSB平面放另一个二值图片,......等等。。
彩色图片转成灰度图,再把灰度图转成彩色图:每个彩色图片的每个像素点都由RGB三原色构成,可以把RGB转成其他颜色格式,假设转成了某一种格式XYZ,
具体的可以去网上找找。这样灰度值可以从新的格式中的某一维直接读出(据我所知,YUV,YIQ格式中的Y就表示的灰度值),然后对该灰度值做更改,但要保存其他两个颜色维度的信息,
这样既保存原有一幅彩色图像所需的颜色信息,又更改了灰度值,才能实现彩色到灰度再到彩色的转换。
嵌入的位置:我同学跟我说的,VHDL处理的是流式数据,那这样的话,一幅图片也是一个像素点一个像素点的流式数据。就像C中的二维数组其实
也可以转成1维数组一样的道理,二维数组里面的元素地址的计算是把最开始元素的地址+偏移值,比如一个mxn大小的二维数组A,A(i,j)元素从一维数组的
角度看的话,就是第ixn+j个元素。这样的话在LSB平面嵌入一个序列,只要确定从第几个比特位开始嵌入就行。
上面就是一点个人想法,希望对你有帮助。
(CSDN的这个编辑器不知道怎么回事,好好的格式成了什么样了,再发一遍)我不会VHDL,关于这个题目的一点想法,可以参考下:
首先猜测下你们老师的意图:一幅彩色图片,如果只对LSB平面(灰度值最低比特位所构成的平面)做更改的话,那对整个彩色图片的影响是很小
的,因为是最低比特位了,对整个值的影响也就加1或减1的区别。既然改变LSB平面的影响小,那就可以充分发挥它的用途,比如加入指定的序列
(这个可以防伪,貌似),比如在LSB平面放另一个二值图片,......等等。。
彩色图片转成灰度图,再把灰度图转成彩色图:每个彩色图片的每个像素点都由RGB三原色构成,可以把RGB转成其他颜色格式,假设转成了某一 种格式XYZ,具体的可以去网上找找。这样灰度值可以从新的格式中的某一维直接读出(据我所知,YUV,YIQ格式中的Y就表示的灰度值),然后 对该灰度值做更改,但要保存其他两个颜色维度的信息,这样既保存原有一幅彩色图像所需的颜色信息,又更改了灰度值,才能实现彩色到灰度再 到彩色的转换。
嵌入的位置:我同学跟我说的,VHDL处理的是流式数据,那这样的话,一幅图片也是一个像素点一个像素点的流式数据。就像C中的二维数组其实
也可以转成1维数组一样的道理,二维数组里面的元素地址的计算是把最开始元素的地址+偏移值,比如一个mxn大小的二维数组A,A(i,j)元素从一
维数组的角度看的话,就是第ixn+j个元素。这样的话在LSB平面嵌入一个序列,只要确定从第几个比特位开始嵌入就行。
4.序列检测:这个网上的内容应该比较多,我也不大了解,看你的了
上面就是一点个人想法,希望对你有帮助。
额,这个编辑器真的是个渣,同学,去知乎问吧,看到这个格式,我自己都不想看