mirror of
https://github.com/xdsopl/robot36.git
synced 2026-01-05 15:59:59 +01:00
add smoothing to raw mode too and fix mistakes
This commit is contained in:
parent
6584934516
commit
2d6a4d7aca
|
|
@ -57,7 +57,7 @@ public class PaulDon implements Mode {
|
|||
for (int i = prevPulseIndex + beginSamples; i < prevPulseIndex + endSamples; ++i)
|
||||
scanLineBuffer[i] = lowPassFilter.avg(scanLineBuffer[i]);
|
||||
lowPassFilter.reset(evenBuffer.length / (float) channelSamples);
|
||||
for (int i = prevPulseIndex + endSamples - 1; i >= scanLineSamples + beginSamples; --i)
|
||||
for (int i = prevPulseIndex + endSamples - 1; i >= prevPulseIndex + beginSamples; --i)
|
||||
scanLineBuffer[i] = lowPassFilter.avg(scanLineBuffer[i]);
|
||||
for (int i = 0; i < evenBuffer.length; ++i) {
|
||||
int position = (i * channelSamples) / evenBuffer.length + prevPulseIndex;
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ public class RGBDecoder implements Mode {
|
|||
for (int i = prevPulseIndex + beginSamples; i < prevPulseIndex + endSamples; ++i)
|
||||
scanLineBuffer[i] = lowPassFilter.avg(scanLineBuffer[i]);
|
||||
lowPassFilter.reset(evenBuffer.length / (float) greenSamples);
|
||||
for (int i = prevPulseIndex + endSamples - 1; i >= scanLineSamples + beginSamples; --i)
|
||||
for (int i = prevPulseIndex + endSamples - 1; i >= prevPulseIndex + beginSamples; --i)
|
||||
scanLineBuffer[i] = lowPassFilter.avg(scanLineBuffer[i]);
|
||||
for (int i = 0; i < evenBuffer.length; ++i) {
|
||||
int redPos = redBeginSamples + (i * redSamples) / evenBuffer.length + prevPulseIndex;
|
||||
|
|
|
|||
|
|
@ -7,8 +7,10 @@ Copyright 2024 Ahmet Inan <xdsopl@gmail.com>
|
|||
package xdsopl.robot36;
|
||||
|
||||
public class RawDecoder implements Mode {
|
||||
private final ExponentialMovingAverage lowPassFilter;
|
||||
|
||||
RawDecoder() {
|
||||
lowPassFilter = new ExponentialMovingAverage();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -25,6 +27,12 @@ public class RawDecoder implements Mode {
|
|||
public int decodeScanLine(int[] evenBuffer, int[] oddBuffer, float[] scanLineBuffer, int prevPulseIndex, int scanLineSamples) {
|
||||
if (prevPulseIndex < 0 || prevPulseIndex + scanLineSamples > scanLineBuffer.length)
|
||||
return 0;
|
||||
lowPassFilter.reset(evenBuffer.length / (float) scanLineSamples);
|
||||
for (int i = prevPulseIndex; i < prevPulseIndex + scanLineSamples; ++i)
|
||||
scanLineBuffer[i] = lowPassFilter.avg(scanLineBuffer[i]);
|
||||
lowPassFilter.reset(evenBuffer.length / (float) scanLineSamples);
|
||||
for (int i = prevPulseIndex + scanLineSamples - 1; i >= prevPulseIndex; --i)
|
||||
scanLineBuffer[i] = lowPassFilter.avg(scanLineBuffer[i]);
|
||||
for (int i = 0; i < evenBuffer.length; ++i) {
|
||||
int position = (i * scanLineSamples) / evenBuffer.length + prevPulseIndex;
|
||||
evenBuffer[i] = ColorConverter.GRAY(scanLineBuffer[position]);
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ public class Robot_36_Color implements Mode {
|
|||
for (int i = prevPulseIndex + beginSamples; i < prevPulseIndex + endSamples; ++i)
|
||||
scanLineBuffer[i] = lowPassFilter.avg(scanLineBuffer[i]);
|
||||
lowPassFilter.reset(evenBuffer.length / (float) luminanceSamples);
|
||||
for (int i = prevPulseIndex + endSamples - 1; i >= scanLineSamples + beginSamples; --i)
|
||||
for (int i = prevPulseIndex + endSamples - 1; i >= prevPulseIndex + beginSamples; --i)
|
||||
scanLineBuffer[i] = lowPassFilter.avg(scanLineBuffer[i]);
|
||||
for (int i = 0; i < evenBuffer.length; ++i) {
|
||||
int luminancePos = luminanceBeginSamples + (i * luminanceSamples) / evenBuffer.length + prevPulseIndex;
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ public class Robot_72_Color implements Mode {
|
|||
for (int i = prevPulseIndex + beginSamples; i < prevPulseIndex + endSamples; ++i)
|
||||
scanLineBuffer[i] = lowPassFilter.avg(scanLineBuffer[i]);
|
||||
lowPassFilter.reset(evenBuffer.length / (float) luminanceSamples);
|
||||
for (int i = prevPulseIndex + endSamples - 1; i >= scanLineSamples + beginSamples; --i)
|
||||
for (int i = prevPulseIndex + endSamples - 1; i >= prevPulseIndex + beginSamples; --i)
|
||||
scanLineBuffer[i] = lowPassFilter.avg(scanLineBuffer[i]);
|
||||
for (int i = 0; i < evenBuffer.length; ++i) {
|
||||
int yPos = yBeginSamples + (i * luminanceSamples) / evenBuffer.length + prevPulseIndex;
|
||||
|
|
|
|||
Loading…
Reference in a new issue