Hi Jesse,
I did some testing with OpenCV JPEG compression.
Firstly, I will attach a design that has a chess board generator with uneven tiles, thus creating a test environment that has no artifacts in it. I adapted your original design, you can use it for testing, but I doubt that it will work in hardware.
Furthermore, here is a short Python-Snippet for doing the testing I did:
from matplotlib import pyplot as plt
# load the jpeg file from VA here
test = imageio.imread('uneven.tiff')[0,:].tobytes()
f = open('newWay.jpg', 'wb')
jpeg_from_va = cv2.imread("newWay.jpg")
#now load the original file
original = cv2.imread("unEvenChessboard.tiff")
# check the jpeg artifacts
jpeg_artifacts_va = np.float32(original) - np.float32(jpeg_from_va)
plt.figure(0,figsize=[20,10])
plt.imshow(jpeg_artifacts_va)
cv2.imwrite("uneven.jpg", original, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
jpeg_by_opencv = cv2.imread("uneven.jpg")
jpeg_artifacts_opencv = np.float32(original) - np.float32(jpeg_by_opencv)
# now do the jpeg compression with opencv
plt.figure(1,figsize=[20,10])
plt.imshow(jpeg_artifacts_opencv)
plt.figure(3,figsize=[20,20])
plt.imshow(jpeg_artifacts_va[:200,:200])
plt.title("Visual Applets Artifacts")
plt.imshow(jpeg_artifacts_opencv[:200,:200])
plt.title("OpenCV Artifacts")
Display More
With this snippet I created the following plot:
pasted-from-clipboard.png
This is a visualization of the different artifacts introduced by Visual Applets and OpenCV, respectively.
They both have a different implementation, therefore the shown artifacts are different.
However, what is more important: In both cases the JPEG artifacts are diferent in the horizontal in the vertical direction with OpenCV and with Visual Applets.
Therefore, your observation, that the artifacts are more visible on the horizontal edges than on the vertical edges does not show that there is a bug in the implementation but can be explained by the loss of information due to jpeg compression.
For further questions on this matter, please refer to our support.
Best Regards,
Kevin