本帖最后由 1nnocent 于 2022-9-25 11:45 编辑
之前做图像缩放仿真验证时需要读取图片数据进行处理,vivado读取的是raw文件,现在想想能不能用来给证件照换个背景颜色,现在有空来试试。原理很简单,主要三个步骤:
1、用PS打开图片,这里PS只用于查看图片分辨率以及背景颜色的具体像素值和格式转换(需要将图片转换成raw格式);
2、Verilog读取像素值 ,并进行判断,把符合替换条件的像素值(可以使用PS查看)换成目标背景颜色的像素值;
3、仿真运行,并输出替换后的文件,再次打开PS把输出的raw格式文件转换成需要的图片格式,至此就完成换背景操作啦。接下来看具体过程:
1、先在网上找个证件照
这里不使用具体某人的证件照,我们 直接百度动物证件照,并保存下来,这里找了两张,先放上来。
2、使用PS打开,查看相关信息,并保存为raw文件
1、确定图片像素:418X557
2、确定当前背景颜色像素值(这里使用吸管工具): 记录当前背景色的像素值:R197 G41 B28
3、保存为raw文件:input_418x557_dog_red.raw
2、使用Verilog对图像进行处理
Verilog读取像素数据时进行判断,更改判断条件,并替换成目标像素。
1、先修改分辨率:
2、修改判断条件:因为图片可能存在模糊现象,所以这里的判断过程需要给一个区间,左边是我们PS中读取的值。
修改范围后:
3、运行仿真:
4、仿真完成后PS打开输出的raw文件,查看图片质量,如果存在噪点可以用PS确定噪点的像素值,重复2、3、4步骤,直到达到预期效果。
第一次仿真输出效果:
定位噪点像素值,继续仿真:可以多查看几个点的像素值,以便更好地确定判断条件范围。
进一步仿真输出效果:
太细节的地方好像不能处理得很好。这是目前最佳效果。
4、最后一步将满意的图片用PS转换成PNG等需要的格式
猫也试一下,做个反面教材:黑色背景颜色不太好,猫的眼珠是黑的,换的时候也把眼珠换了(好像又解锁了新玩法),可能这就是拍证件照尽量不穿和背景颜色相近的原因。