1nnocent 发表于 2022-9-25 11:42

使用Verilog给证件照换背景颜色

<div class='showpostmsg'> 本帖最后由 1nnocent 于 2022-9-25 11:45 编辑

<p>&nbsp; &nbsp; 之前做图像缩放仿真验证时需要读取图片数据进行处理,vivado读取的是raw文件,现在想想能不能用来给证件照换个背景颜色,现在有空来试试。原理很简单,主要三个步骤:</p>

<p>&nbsp; &nbsp; 1、用PS打开图片,这里PS只用于查看图片分辨率以及背景颜色的具体像素值和格式转换(需要将图片转换成raw格式);</p>

<p>&nbsp; &nbsp; 2、Verilog读取像素值 ,并进行判断,把符合替换条件的像素值(可以使用PS查看)换成目标背景颜色的像素值;</p>

<p>&nbsp; &nbsp; 3、仿真运行,并输出替换后的文件,再次打开PS把输出的raw格式文件转换成需要的图片格式,至此就完成换背景操作啦。接下来看具体过程:</p>

<p>&nbsp;</p>

<p><strong>1、先在网上找个证件照</strong></p>

<p>&nbsp; &nbsp; 这里不使用具体某人的证件照,我们 直接百度动物证件照,并保存下来,这里找了两张,先放上来。</p>

<p>&nbsp;</p>

<p></p>

<p>&nbsp;</p>

<p><strong>2、使用PS打开,查看相关信息,并保存为raw文件</strong></p>

<p>&nbsp; &nbsp; 1、确定图片像素:418X557</p>

<p><br />
</p>

<p>&nbsp;</p>

<p>&nbsp; &nbsp; 2、确定当前背景颜色像素值(这里使用吸管工具):&nbsp; 记录当前背景色的像素值:R197&nbsp; &nbsp; G41&nbsp; &nbsp; B28</p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>&nbsp;3、保存为raw文件:input_418x557_dog_red.raw</p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p><strong>2、使用Verilog对图像进行处理</strong></p>

<p>&nbsp; &nbsp; Verilog读取像素数据时进行判断,更改判断条件,并替换成目标像素。</p>

<p>&nbsp; &nbsp; 1、先修改分辨率:</p>

<p><br />
</p>

<p>&nbsp;2、修改判断条件:因为图片可能存在模糊现象,所以这里的判断过程需要给一个区间,左边是我们PS中读取的值。</p>

<p>&nbsp;</p>

<p></p>

<p>&nbsp; 修改范围后:</p>

<p>&nbsp;</p>

<p></p>

<p>&nbsp; &nbsp; 3、运行仿真:</p>

<p></p>

<p>4、仿真完成后PS打开输出的raw文件,查看图片质量,如果存在噪点可以用PS确定噪点的像素值,重复2、3、4步骤,直到达到预期效果。</p>

<p>&nbsp;</p>

<p></p>

<p>&nbsp; 第一次仿真输出效果:</p>

<p>&nbsp;</p>

<p></p>

<p>定位噪点像素值,继续仿真:可以多查看几个点的像素值,以便更好地确定判断条件范围。</p>

<p>&nbsp;</p>

<p></p>

<p>进一步仿真输出效果:</p>

<p>&nbsp;</p>

<p></p>

<p>&nbsp; &nbsp; 太细节的地方好像不能处理得很好。这是目前最佳效果。</p>

<p><strong>4、最后一步将满意的图片用PS转换成PNG等需要的格式</strong></p>

<p>&nbsp;</p>

<p>&nbsp; &nbsp; 猫也试一下,做个反面教材:黑色背景颜色不太好,猫的眼珠是黑的,换的时候也把眼珠换了(好像又解锁了新玩法),可能这就是拍证件照尽量不穿和背景颜色相近的原因。</p>

<p>&nbsp;</p>

<p></p>

<p>&nbsp;</p>

<div>&nbsp; &nbsp; 最后附上代码:</div>

<p>&nbsp;</p>
</div><script>                                var loginstr = '<div class="locked">查看精华帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                               
                                if(parseInt(discuz_uid)==0){
                                                                                        (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                }
</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

秦天qintian0303 发表于 2022-9-25 20:18

<p>现在这种快速更换背景的软件还是挺多的,例如美图秀秀</p>

吾妻思萌 发表于 2022-9-26 06:46

<p>赞了 想法很好
代码里可以加上从边界开始的色彩值要一直连续才能替换。这样就避免了眼睛被替换了</p>

soso 发表于 2022-9-26 17:16

<p>比我们人工修图修的好 :)</p>

1nnocent 发表于 2022-9-26 19:53

秦天qintian0303 发表于 2022-9-25 20:18
现在这种快速更换背景的软件还是挺多的,例如美图秀秀

<p>纯属好奇试一试</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>。</p>

1nnocent 发表于 2022-9-26 19:55

吾妻思萌 发表于 2022-9-26 06:46
赞了 想法很好
代码里可以加上从边界开始的色彩值要一直连续才能替换。这样就避免了眼睛被替换了

<p>最近不是很有空,看看有没有其他网友有时间有兴趣的可以试试</p>

1nnocent 发表于 2022-9-26 19:56

soso 发表于 2022-9-26 17:16
比我们人工修图修的好 :)

<p>起码比我自己修得好哈哈哈哈</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>。</p>

<p>&nbsp;</p>

明月半倚深秋i 发表于 2022-10-3 14:55

<p>感谢楼主,学习了!这就回去试试给我的证件照换底色</p>

1nnocent 发表于 2022-10-8 11:05

明月半倚深秋i 发表于 2022-10-3 14:55
感谢楼主,学习了!这就回去试试给我的证件照换底色

<p>边缘处理得可能不是很好,但是好像不影响使用,自己换了一个白底证件照报名健康管理师用</p>

lkh747566933 发表于 2022-10-29 17:09

FPGA太难了,学不会啊!还是老实研究我的51和STM32吧!

jiangbianyeren 发表于 2022-11-9 12:29

MARK!MARK!学习了,虽然很多软件都能做,但是用Verilog感觉很新颖!

xutong 发表于 2023-2-23 22:15

<p>给大牛点赞</p>

1nnocent 发表于 2023-2-23 23:07

xutong 发表于 2023-2-23 22:15
给大牛点赞

<p>功能比较简单,算不上大牛哈哈哈</p>

<p>&nbsp;</p>

<p>。</p>

1nnocent 发表于 2023-2-23 23:08

jiangbianyeren 发表于 2022-11-9 12:29
MARK!MARK!学习了,虽然很多软件都能做,但是用Verilog感觉很新颖!

<p>就是效果没有其他软件做得好,纯属自己玩玩哈哈哈</p>

<p>&nbsp;</p>

<p>我的健康管理师证书上面的照片就是用这个方法P的图,红底P成蓝底哈哈哈</p>

1nnocent 发表于 2023-2-23 23:09

lkh747566933 发表于 2022-10-29 17:09
FPGA太难了,学不会啊!还是老实研究我的51和STM32吧!

<p>入门还是可以的,要精通的话其实都挺难的</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>,</p>

ksn 发表于 2023-3-31 10:52

<p>进来第一眼看到这狗子证件照真的绷不住了哈哈哈,虽然但是楼主角度清奇,给大佬点赞<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan88.gif" width="59" /></p>

1nnocent 发表于 2023-3-31 11:09

ksn 发表于 2023-3-31 10:52
进来第一眼看到这狗子证件照真的绷不住了哈哈哈,虽然但是楼主角度清奇,给大佬点赞

<p>那总不能用自己的证件照吧哈哈哈</p>

<p><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/lol.gif" width="48" /></p>

tommy1987 发表于 2023-6-5 15:40

<p>简单的PPT里就可以给证件照换底色,但是比较精细的就要PS了。我之前都是取色器取,然后自己框选出来弄的。</p>

lkh747566933 发表于 2023-7-2 01:09

不错的资料,感谢楼主分享的资料。正好学习学习别人的设计。
页: [1]
查看完整版本: 使用Verilog给证件照换背景颜色