发明名称 边界和曲率驱动修复的图像编码和解码方法
摘要 本发明公开一种边界和曲率驱动修复的图像编码和解码方法,首先根据边缘强度和颜色方差将图像子块分为结构块、结构模版块、梯度块、梯度模版块和非特征块,由于非特征块的像素值无法用典型模型来刻画,同时为了有效地恢复结构子块和梯度子块,必须保留主要的结构和梯度参数,因此,本发明采用传统的JPEG方法编码结构模版块、梯度模版块和非特征块,而且采用线性插值方法修复梯度块。最后,采用边界插值和曲率驱动的扩散模型修复结构块,进而获得解码后的图像,可克服现有方法中结构边断裂和纹理模糊的不足。
申请公布号 CN103856776A 申请公布日期 2014.06.11
申请号 CN201310729814.4 申请日期 2013.12.26
申请人 辽宁师范大学 发明人 宋传鸣;王相海;傅博;汲海巍
分类号 H04N19/176(2014.01)I;H04N19/154(2014.01)I 主分类号 H04N19/176(2014.01)I
代理机构 大连非凡专利事务所 21220 代理人 闪红霞
主权项 1.一种边界和曲率驱动修复的图像编码和解码方法,其特征在于:所述编码方法按如下步骤进行:a. 将源图像分成尺寸为<i>S</i>×<i>S</i>像素的、不重叠的子块;b. 将所有子块分成结构块、结构块模版、梯度块、梯度块模版和非特征块,并建立标志块类型的块类型表;b.1 将源图像转换为灰度图,采用Canny算子进行边缘检测并建立标志边缘位置的边缘表;b.2 初始化块类型表;b.3 对于源图像的每个子块,若当前子块中包含边缘,则将其归为结构块类型,并在块类型表中将相应位置的值设置为1;否则,转入b.4;b.3.1 如果在当前的结构块中边缘像素的个数大于<i>S</i>或者小于<i>S</i> / <i>2</i>,则把它归为结构块模版类型,并在块类型表中将相应位置的值设置为2;b.3.2 如果在当前结构块的8邻域内存在至少2个结构块,则把它归为结构块模版类型,并在块类型表中将相应位置的值设置为2;b.4 对于源图像中每个尚未确定类型的子块,计算其颜色方差<img file="2013107298144100001DEST_PATH_IMAGE001.GIF" wi="17" he="20" />:<img file="DEST_PATH_IMAGE003.GIF" wi="359" he="277" />其中,<img file="770720DEST_PATH_IMAGE004.GIF" wi="50" he="22" />代表红、绿、蓝三种颜色分量,<img file="818177DEST_PATH_IMAGE006.GIF" wi="52" he="24" />表示一个子块的<img file="988259DEST_PATH_IMAGE004.GIF" wi="50" he="22" />三个分量的平均值,<img file="DEST_PATH_IMAGE007.GIF" wi="29" he="18" />表示像素的坐标;若当前子块的颜色方差<img file="946856DEST_PATH_IMAGE001.GIF" wi="17" he="20" />小于阈值<img file="835178DEST_PATH_IMAGE008.GIF" wi="20" he="25" />,则将其归为梯度块,在块类型表中将相应元素的值设置为3;否则,将当前子块归为非特征子块,并在块类型表中将相应元素的值设置为5;b.4.1 对于所有的梯度块,如果某个块的8领域内存在结构块或者非特征块,则把它归为梯度块模版类型,并在块类型表中将相应位置的值设置为4;b.4.2 对于所有的梯度块,如果某个块的平均像素值大于源图像中所有梯度块的平均像素值,则也把它归为梯度块模版类型,并在块类型表中将相应位置的值设置为4;c. 采用JPEG编码所有的结构块模版、梯度块模版和非特征块;d. 采用算术编码压缩块类型表、边缘表和每个梯度块的梯度信息,结束;所述解码方法按如下步骤进行:a. 采用JPEG解码出结构块模版、梯度块模版和非特征块;b. 采用算术解码得到块类型表、边缘表和每个梯度块的梯度信息;c. 利用梯度块的梯度信息和其8邻域内的已解码子块来解码梯度块:c.1 对于每个梯度块,将其周围已经解码出的子块个数称为“置信度”,在所有未解码的梯度块中选择“置信度”最高的块作为待修复子块;c.2 修复梯度块的四条边界:c.2.1 若待修复块周围4邻域的相邻子块都已经解码,则直接采用相邻子块边界处的像素值对待修复块边界的像素进行赋值;转入c.3;c.2.2 若待修复块周围4邻域的相邻子块中有3个已经解码,则用c.2.1中的方法对相应的3条边界的像素进行赋值;而对于剩余的1条边界,则结合当前梯度块的梯度信息和线性插值方法进行修复,插值公式为:<img file="717683DEST_PATH_IMAGE010.GIF" wi="468" he="36" />其中,<img file="DEST_PATH_IMAGE011.GIF" wi="36" he="35" />表示坐标为<img file="696266DEST_PATH_IMAGE012.GIF" wi="37" he="28" />的像素的值,<img file="638814DEST_PATH_IMAGE014.GIF" wi="300" he="43" />,<img file="263699DEST_PATH_IMAGE016.GIF" wi="240" he="51" />,<img file="DEST_PATH_IMAGE017.GIF" wi="21" he="25" />和<img file="887579DEST_PATH_IMAGE018.GIF" wi="21" he="26" />表示当前子块的平均梯度在水平和垂直方向上的分量;c.2.3 若待修复块周围4邻域的相邻子块中有2个已经解码,则先用c.2.1的方法修复相应的2条边界的像素; c.2.3.1 当两条已知边界相邻时,则令<img file="DEST_PATH_IMAGE019.GIF" wi="57" he="25" />,<img file="717738DEST_PATH_IMAGE020.GIF" wi="58" he="25" />,一边界上任意像素的修复值为:<img file="18138DEST_PATH_IMAGE022.GIF" wi="408" he="34" />另一相邻边界上任意像素的修复值:<img file="881052DEST_PATH_IMAGE024.GIF" wi="407" he="31" />c.2.3.2 当两条已知边界不相邻时,则令<img file="793776DEST_PATH_IMAGE026.GIF" wi="257" he="34" />,一边界上任意像素的修复值为:<img file="120852DEST_PATH_IMAGE028.GIF" wi="419" he="42" />另一相对边界上任意像素的修复值为:<img file="77306DEST_PATH_IMAGE030.GIF" wi="419" he="31" />c.2.4 若待修复块周围4邻域的相邻子块中有1个已经解码,则先用c.2.1的方法修复其相邻边界的像素值;首先修复已知边界的对边,其任意像素的修复值为:<img file="489833DEST_PATH_IMAGE032.GIF" wi="288" he="31" />,剩余的相对两边界采用c.2.3的方法完成修复;c.3 根据当前子块的边界像素值和梯度信息修复当前子块内部的像素值:<img file="704783DEST_PATH_IMAGE034.GIF" wi="456" he="34" />,其中<img file="DEST_PATH_IMAGE035.GIF" wi="118" he="22" />,<img file="824048DEST_PATH_IMAGE036.GIF" wi="118" he="22" />,<img file="970646DEST_PATH_IMAGE038.GIF" wi="272" he="35" />,<img file="DEST_PATH_IMAGE039.GIF" wi="110" he="46" />,<img file="542573DEST_PATH_IMAGE040.GIF" wi="72" he="42" />,<img file="DEST_PATH_IMAGE041.GIF" wi="112" he="46" />,<img file="233317DEST_PATH_IMAGE042.GIF" wi="73" he="42" />式中符号含义与c.2.2相同;c.4 如果仍有待修复的梯度块,则转入c.1;否则,梯度块的解码过程结束;d. 利用结构块的边缘信息和其8邻域内的已解码子块信息来解码结构块;d.1 对于每个结构块,将其周围的已经解码出的子块个数也称为“置信度”;在所有未解码的结构块中选择置信度最高的块作为待修复子块;d.2 将当前待修复子块及位于其8邻域范围内的8个子块组成一个集合B,并为B建立一张可用像素表;若某个像素已解码,则在该表中将相应位置的元素值置为1,否则置为0;d.3 利用边缘表计算出B中长度最长的一条边缘,称为“主边”;以主边为对称轴,左、右各<i>R</i>个像素为半径建立一个“结构区域”;位于结构区域内、主边左侧的像素集合归为B1类,而主边右侧的像素集合归为B2类;当前待修复子块中除了结构区域外,剩余像素组成的集合称为“扩散区域”;d.4 修复位于当前子块结构区域中的边缘像素,根据边缘表和结构区域中的的已知边缘点,利用线性插值的方法修复未知边缘点:<img file="534985DEST_PATH_IMAGE044.GIF" wi="408" he="73" />d.5 修复位于当前子块的结构区域中除边缘像素以外的像素,称为“内点”;d.5.1 根据可用像素表统计每个内点周围、<img file="DEST_PATH_IMAGE045.GIF" wi="45" he="20" />像素范围内的可用像素数目,并选择可用像素数目最多的内点作为待修复的目标像素<img file="787237DEST_PATH_IMAGE046.GIF" wi="14" he="17" />;d.5.2 以目标像素为中心建立一个大小为<img file="908777DEST_PATH_IMAGE045.GIF" wi="45" he="20" />像素的模板<img file="DEST_PATH_IMAGE047.GIF" wi="16" he="18" />,并设目标像素属于B1类,则在结构区域的B1类点中搜索与<img file="403212DEST_PATH_IMAGE047.GIF" wi="16" he="18" />最为匹配的<img file="559387DEST_PATH_IMAGE045.GIF" wi="45" he="20" />像素点集<img file="41928DEST_PATH_IMAGE048.GIF" wi="20" he="18" />,再将<img file="588447DEST_PATH_IMAGE048.GIF" wi="20" he="18" />的中心像素<img file="DEST_PATH_IMAGE049.GIF" wi="23" he="25" />的值赋值给目标像素<img file="683311DEST_PATH_IMAGE046.GIF" wi="14" he="17" />作为其修复值;d.5.3 若结构区域中仍有未修复的像素,则转入d.5.1;否则,转入d.6;d.6 若仍有待修复的结构块,则转入d.1;否则,结构块的解码过程结束;d.7 对于整个待解码图像,采用曲率驱动模型修复位于结构块扩散区域中的像素,解码过程结束。
地址 116029 辽宁省大连市沙河口区黄河路850号