使用Verilog给证件照换背景颜色
<div class='showpostmsg'> 本帖最后由 1nnocent 于 2022-9-25 11:45 编辑<p> 之前做图像缩放仿真验证时需要读取图片数据进行处理,vivado读取的是raw文件,现在想想能不能用来给证件照换个背景颜色,现在有空来试试。原理很简单,主要三个步骤:</p>
<p> 1、用PS打开图片,这里PS只用于查看图片分辨率以及背景颜色的具体像素值和格式转换(需要将图片转换成raw格式);</p>
<p> 2、Verilog读取像素值 ,并进行判断,把符合替换条件的像素值(可以使用PS查看)换成目标背景颜色的像素值;</p>
<p> 3、仿真运行,并输出替换后的文件,再次打开PS把输出的raw格式文件转换成需要的图片格式,至此就完成换背景操作啦。接下来看具体过程:</p>
<p> </p>
<p><strong>1、先在网上找个证件照</strong></p>
<p> 这里不使用具体某人的证件照,我们 直接百度动物证件照,并保存下来,这里找了两张,先放上来。</p>
<p> </p>
<p></p>
<p> </p>
<p><strong>2、使用PS打开,查看相关信息,并保存为raw文件</strong></p>
<p> 1、确定图片像素:418X557</p>
<p><br />
</p>
<p> </p>
<p> 2、确定当前背景颜色像素值(这里使用吸管工具): 记录当前背景色的像素值:R197 G41 B28</p>
<p> </p>
<p> </p>
<p> 3、保存为raw文件:input_418x557_dog_red.raw</p>
<p> </p>
<p> </p>
<p><strong>2、使用Verilog对图像进行处理</strong></p>
<p> Verilog读取像素数据时进行判断,更改判断条件,并替换成目标像素。</p>
<p> 1、先修改分辨率:</p>
<p><br />
</p>
<p> 2、修改判断条件:因为图片可能存在模糊现象,所以这里的判断过程需要给一个区间,左边是我们PS中读取的值。</p>
<p> </p>
<p></p>
<p> 修改范围后:</p>
<p> </p>
<p></p>
<p> 3、运行仿真:</p>
<p></p>
<p>4、仿真完成后PS打开输出的raw文件,查看图片质量,如果存在噪点可以用PS确定噪点的像素值,重复2、3、4步骤,直到达到预期效果。</p>
<p> </p>
<p></p>
<p> 第一次仿真输出效果:</p>
<p> </p>
<p></p>
<p>定位噪点像素值,继续仿真:可以多查看几个点的像素值,以便更好地确定判断条件范围。</p>
<p> </p>
<p></p>
<p>进一步仿真输出效果:</p>
<p> </p>
<p></p>
<p> 太细节的地方好像不能处理得很好。这是目前最佳效果。</p>
<p><strong>4、最后一步将满意的图片用PS转换成PNG等需要的格式</strong></p>
<p> </p>
<p> 猫也试一下,做个反面教材:黑色背景颜色不太好,猫的眼珠是黑的,换的时候也把眼珠换了(好像又解锁了新玩法),可能这就是拍证件照尽量不穿和背景颜色相近的原因。</p>
<p> </p>
<p></p>
<p> </p>
<div> 最后附上代码:</div>
<p> </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> <p>现在这种快速更换背景的软件还是挺多的,例如美图秀秀</p>
<p>赞了 想法很好
代码里可以加上从边界开始的色彩值要一直连续才能替换。这样就避免了眼睛被替换了</p> <p>比我们人工修图修的好 :)</p>
秦天qintian0303 发表于 2022-9-25 20:18
现在这种快速更换背景的软件还是挺多的,例如美图秀秀
<p>纯属好奇试一试</p>
<p> </p>
<p> </p>
<p> </p>
<p>。</p>
吾妻思萌 发表于 2022-9-26 06:46
赞了 想法很好
代码里可以加上从边界开始的色彩值要一直连续才能替换。这样就避免了眼睛被替换了
<p>最近不是很有空,看看有没有其他网友有时间有兴趣的可以试试</p>
soso 发表于 2022-9-26 17:16
比我们人工修图修的好 :)
<p>起码比我自己修得好哈哈哈哈</p>
<p> </p>
<p> </p>
<p> </p>
<p>。</p>
<p> </p>
<p>感谢楼主,学习了!这就回去试试给我的证件照换底色</p>
明月半倚深秋i 发表于 2022-10-3 14:55
感谢楼主,学习了!这就回去试试给我的证件照换底色
<p>边缘处理得可能不是很好,但是好像不影响使用,自己换了一个白底证件照报名健康管理师用</p>
FPGA太难了,学不会啊!还是老实研究我的51和STM32吧! MARK!MARK!学习了,虽然很多软件都能做,但是用Verilog感觉很新颖! <p>给大牛点赞</p>
xutong 发表于 2023-2-23 22:15
给大牛点赞
<p>功能比较简单,算不上大牛哈哈哈</p>
<p> </p>
<p>。</p>
jiangbianyeren 发表于 2022-11-9 12:29
MARK!MARK!学习了,虽然很多软件都能做,但是用Verilog感觉很新颖!
<p>就是效果没有其他软件做得好,纯属自己玩玩哈哈哈</p>
<p> </p>
<p>我的健康管理师证书上面的照片就是用这个方法P的图,红底P成蓝底哈哈哈</p>
lkh747566933 发表于 2022-10-29 17:09
FPGA太难了,学不会啊!还是老实研究我的51和STM32吧!
<p>入门还是可以的,要精通的话其实都挺难的</p>
<p> </p>
<p> </p>
<p>,</p>
<p>进来第一眼看到这狗子证件照真的绷不住了哈哈哈,虽然但是楼主角度清奇,给大佬点赞<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/wanwan88.gif" width="59" /></p>
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>
<p>简单的PPT里就可以给证件照换底色,但是比较精细的就要PS了。我之前都是取色器取,然后自己框选出来弄的。</p>
不错的资料,感谢楼主分享的资料。正好学习学习别人的设计。
页:
[1]