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 插件,使图像边界也能得到处理。使用扩展图像边界之外区域的方法。
图像边界扩展方法
可从以下四种方法中选择一种来扩展图像边界并处理图像边界。

957

被折叠的 条评论
为什么被折叠?



