C语言数字图像处理(二):图像缩放和负片处理

0. 完整仓库 & 教程:

这一章节的完整代码在:Chapter​​ ​​​​​2. Image Reduction, Enlargement and Negative

如果你喜欢这个系列的文章或者感觉对你有帮助,请给我的仓库一个⭐️

1. 图像缩小

  • 1.1 交替行缩小算法

算法:

假设原始图像尺寸为 m \times n,缩小比例为f_x (0 < f_x < 1),输出尺寸则为(m \times f_x) \times (n \times f_x)

图像(每行和每列)每隔 \text{round}(1/f_x) 个像素再取下一个像素,其间隔内的像素则被忽略。

后续代码中图像的缩放比例将被设置为0.5。​​​​​​​

图像和结果对比(lena, bridge, noise;  ratio = 0.5):

结果分析:

该算法根据图像的缩小比例选择并丢弃每行和列的像素。因此,输出图像中的所有像素都直接来自原图。这种方法简单有效地确定了输出像素的值,但由于缺失了一些像素行和列,使得物体边缘锯齿化。

代码实现(完整代码见顶部GitHub):
for(int i = 0; i < image->Height/2 - 1; i++) {
    for(int j = 0; j < image->Width/2 - 1; j++) {
        tempout[(outimage->Width)*i + j] = tempin[(image->Width)*row + column];
        column += 2;
    }
    row += 2;
    column = 0;
}

  • 1.2 分数线性缩小图像算法

算法:

定义 f_x为输出图像的缩放比例(当 0<f_x<1是缩小)。

输出图像与原图像之间的对应关系将是:

后续的代码可以根据输入的缩放

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值