陕西四通建设工程有限责任公司网站,东营 网站建设公司,网站做好了后怎么办,中国网库做网站一、前言
2021年12月31日#xff0c;我发布了基于加权概率模型的图像滤波算法的第一个实验#xff0c;当时有两个关键问题没有解决#xff1a; 1、出现了大面积的黑色区域#xff0c;最近考虑把这个算法实际应用在图像和视频的压缩领域#xff0c;于是通过对程序的分析我发布了基于加权概率模型的图像滤波算法的第一个实验当时有两个关键问题没有解决 1、出现了大面积的黑色区域最近考虑把这个算法实际应用在图像和视频的压缩领域于是通过对程序的分析发现输出时丢失了部分数据。 2、出现两点问题在黑度图像来讲就是出现白点和黑点问题这个问题仅需在图像逆滤波后再修复因为白点一定会出现在黑色区域而黑点可以通过相邻预测的方式进行修复下面的实验在滤波时不考虑修复问题。
今天是2023年2月20日通过把程序做了整数化处理并且把丢失问题整理后我又做了一些实验实验调用的代码如下
int main() {BmpImage* img;const char* fileName1 D:\\Lena512.bmp;const char* fileName2 D:\\Lena512-mode1-15.bmp;unsigned char* outbuff1, * outbuff2;int filterRatio 15;int i, count 0, count1 0;unsigned int outlength1 0, length 0;double h;// 装载BMP并把RGB转YUVimg LoadBmpImage(fileName1);length img-bmpInfoHeader.biWidth * img-bmpInfoHeader.biHeight;// 统计符号1的个数for (i 0; i length; i) {count CntOfOneSymboltemp[img-rgbdatas-ucR[i]];}// 把灰度图像进行滤波变换outbuff1 WJLFilterTransform(filterRatio, img-rgbdatas-ucR, length, outlength1);if (img-rgbdatas-ucR) free(img-rgbdatas-ucR);for (i 0; i outlength1; i) {count1 CntOfOneSymboltemp[outbuff1[i]];}// 把outbuff1进行逆滤波outbuff2 WJLFilterInverseTransform(filterRatio, outbuff1, outlength1, length);if (outbuff1) free(outbuff1);img-rgbdatas-ucR outbuff2;// 又把YUV转RGBSaveBmpImage(fileName2, img);// 释放if (img-rgbdatas-ucR) free(img-rgbdatas-ucR);if (img-rgbdatas) free(img-rgbdatas);if (img) free(img);system(pause);// 测试图像压缩return 0;
}实验采用的灰度图像为
二、无修复部分的实验
本实验会通过几个参数设定方便得出滤波效果以及出现了白点和黑点问题。
2.1实验一filterRatio 0
将filterRatio 设置为 0通过编码后得出打印结果为
从上述打印的情况可以看出滤波是无效果的而且字节和数据并没有变化所以通过信息熵计算出来的压缩比几乎等于1。我采用UC进行二进制比较可以得出 当filterRatio 设置为 0时任何字节差错都不会出现这个过程实际上是无滤波效果的整个过程是无损的。
2.2实验二filterRatio 3
将filterRatio 设置为 3显然符号1的数量发生了变化且滤波后的数据长度也发生了变化采用二进制比较时同样也会出现5073个字节差异。 而且滤波后的图像如下已经在黑色区域出现白色的点而且某些灰色区域出现了黑点
2.3实验三filterRatio 15
将filterRatio 设置为 15此时图像为 显然黑点和白点出现的更多了。 通过实验得出所有的白点一定会出现在黑色区域但是黑色的点可能出现的位置有很多不过如果是正确的值则和原始数据一致。为了验证上述白点一定会出现在黑色区域所以我有设计了下面的图方便验证
三、验证白色的点一定会出现在黑色区域
实验将采用两个图来进行一张是细胞的灰度图像另一张是文字灰度图分别如下 3.1实验四filterRatio 15
得出如下效果 显然白色的点一定会出现在黑色区域。
3.2实验五filterRatio 25 显然这个意义非常重要于是我又手绘了一张图进行测试发现可以准确的找出绘画的轨迹filterRatio 15。 显然处理滤波以外本算法还有其他的一些意义和价值。
四、总结
通过实验不难看出加权概率模型是可以在图像以下几个地方应用 1、滤波但是滤波后需要根据白点和黑点提出适合的修复方案比如上下文差异的数值求均值填充等。 2、图像分割通过白点必然出现在黑色区域来针对图像进行分割类似snake和等高线算法等这个需要根据具体图像进行具体分析。 3、图像识别通过对比滤波后的图和原始图显然能得出图中的黑色文字和任意手笔迹也就是说像素值存在下面三种情形 设x代表的是原始值y代表的是滤波并逆滤波后的值于是 1当y-xt时可以直接丢弃 2当y-xt时则认为是当前文字或笔迹的位置因为灰度图中黑色的值一定是接近0的值而白色的点一定是接近255的值另外因为白色的点一定会出现在黑色区域所以本算法能有效的提取出图像中的文字或笔迹然后拿这样的结果去训练识别算法即可。 4、图像锐化显然通过上述的实验能给出图形的实际边缘然后再通过简单的代数处理即可实现图形的边缘锐化当然这个在某些场景下可用。 另外filterRatio值不同能产生的效果也不同可以在不同的场景下设置具体的值。 接下来的实验我讲从上述三个方向逐步发布