图像处理插件与算法实现详解

41、以ImageJ插件的形式实现修正的伽马校正,其中γ和a0的值是可变的。修正的伽马校正公式为:当输入值aa <= a0时,输出值bb = s * aa;当输入值aa > a0时,输出值bb = (1 + d) * Math.pow(aa, GAMMA) - d,其中s = GAMMA / (Math.pow(a0, GAMMA - 1) + Math.pow(a0, 1 - GAMMA)),d = 1 / (Math.pow(a0, GAMMA) * (GAMMA - 1) + 1) - 1。

要实现修正的伽马校正并使 γ a0 可变,修改生成查找表的部分,根据公式计算查找表 F ,同时将 γ a0 作为可变参数。以下是大致的代码框架:

public void run(ImageProcessor ip) { // works for 8 - bit images only
    int K = 256;
    int aMax = K - 1;
    double GAMMA = 2.8; // 这里可以改成可变输入方式,如通过对话框输入
    double a0 = 0.2; // 这里可以改成可变输入方式,如通过对话框输入

    // 计算 s 和 d
    double s = GAMMA / (Math.pow(a0, GAMMA - 1) + Math.pow(a0, 1 - GAMMA));
    double d = 1 / (Math.pow(a0, GAMMA) * (GAMMA - 1) + 1) - 1;

    // create and fill the lookup table:
    int[] F = new int[K];
    for (int a = 0; a < K; a++) {
        double aa = (double) a / aMax; // scale to [0, 1]
        double bb;
        if (aa <= a0) {
            bb = s * aa;
        } else {
            bb = (1 + d) * Math.pow(aa, GAMMA) - d;
        }
        // scale back to [0, 255]:
        int b = (int) Math.round(bb * aMax);
        F[a] = b;
    }
    ip.applyTable(F); // modify the image
}

此代码仅为示例,实际使用中可能需要完善输入参数的交互方式等。

42、解释为什么 Adobe Photoshop 中的“自定义滤镜”并非严格意义上的线性滤镜。

Adobe Photoshop 中的“自定义滤镜”并非严格线性滤镜,可能是因为它包含偏移值(Offset),对结果增加了一个常量,破坏了线性系统叠加原理中输出与输入的线性对应关系;还可能使用了缩放因子(Scale),进行缩放操作时可能因取整等产生非线性效果;另外,对结果进行像素值范围限制的钳位操作也会破坏线性特性。

43、当将以下线性滤波器应用于8位灰度图像(像素值范围为[0, 255])时,确定可能的最大和最小结果(像素值):H = [[−1, −2, 0], [−2, 0, 2], [0, 2, 1]]。假设结果不进行截断处理。

计算时,需要考虑图像中像素值的不同组合,以找到滤波器输出的最大和最小值。最大结果可通过让滤波器中正数系数对应图像中的最大像素值(255),负数系数对应最小像素值(0)来计算;最小结果则相反,让正数系数对应最小像素值,负数系数对应最大像素值。

具体计算为:

最大结果
$$
\begin{align }
\text{最大结果} &= (-1) \cdot 0 + (-2) \cdot 0 + 0 \cdot 0 + (-2) \cdot 0 + 0 \cdot 0 + 2 \cdot 255 + 0 \cdot 0 + 2 \cdot 255 + 1 \cdot 255 \
&= 255 \cdot (2 + 2 + 1) \
&= 1275
\end{align
}
$$

最小结果
$$
\begin{align }
\text{最小结果} &= (-1) \cdot 255 + (-2) \cdot 255 + 0 \cdot 255 + (-2) \cdot 255 + 0 \cdot 255 + 2 \cdot 0 + 0 \cdot 255 + 2 \cdot 0 + 1 \cdot 0 \
&= -255 \cdot (1 + 2 + 2) \
&= -1275
\end{align
}
$$

所以可能的最大结果是 1275 ,最小结果是 -1275

44、修改 ImageJ 插件,使图像边界也能得到处理。使用扩展图像边界之外区域的方法。

图像边界扩展方法

可从以下四种方法中选择一种来扩展图像边界并处理图像边界。

方法1:常量值填充

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值