QOI (image format)
ಕ್ವಿಟ್ ಓಕೆ ಇಮೇಜ್ ಫಾರ್ಮ್ಯಾಟ್ (ಕ್ಯೂಒಐ) ಎಂಬುದು 24-ಬಿಟ್ (ಪ್ರತಿ ಬಣ್ಣದ ಆರ್ಜಿಬಿಗೆ 8 ಬಿಟ್ಗಳು) ಅಥವಾ 32-ಬಿಟ್ (8-ಬಿಟ್ ಆಲ್ಫಾ ಚಾನೆಲ್ ಆರ್ಜಿಬಿಎಯೊಂದಿಗೆ ಪ್ರತಿ ಬಣ್ಣಕ್ಕೆ 8 ಬಿಟ್ಗಳು) ಬಣ್ಣದ ರಾಸ್ಟರ್ (ಬಿಟ್ಮ್ಯಾಪ್ ಮಾಡಲಾದ) ಚಿತ್ರಗಳ ನಷ್ಟವಿಲ್ಲದ ಚಿತ್ರ ಸಂಕೋಚನದ ವಿವರಣೆಯಾಗಿದೆ, ಇದನ್ನು ಡೊಮಿನಿಕ್ ಸ್ಜಾಬ್ಲೆವ್ಸ್ಕಿ ಕಂಡುಹಿಡಿದಿದ್ದಾರೆ ಮತ್ತು ಇದನ್ನು ಮೊದಲು 24 ನವೆಂಬರ್ 2021 ರಂದು ಘೋಷಿಸಲಾಯಿತು. ವಿವರಣೆ ಉದ್ದೇಶಿತ ಉದ್ದೇಶವು ಮುಕ್ತ ಮೂಲ ನಷ್ಟವಿಲ್ಲದ ಸಂಕೋಚನ ವಿಧಾನವನ್ನು ರಚಿಸುವುದಾಗಿತ್ತು, ಅದು ಪಿ. ಎನ್. ಜಿ. ಗಿಂತ ವೇಗವಾಗಿ ಮತ್ತು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸುಲಭವಾಗಿತ್ತು. ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಯೂಟ್ಯೂಬ್ ವೀಡಿಯೊವು ಪಿಎನ್ಜಿ ಮತ್ತು ಕ್ಯೂಒಐ ಸಂಕೋಚನವನ್ನು ಹೇಗೆ ನಡೆಸಲಾಗುತ್ತದೆ ಎಂಬುದನ್ನು ವಿವರಿಸುತ್ತದೆ. ಪ್ರಕಟಣೆ ಮತ್ತು ವೀಡಿಯೊದಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಅಂಕಿಅಂಶಗಳು ಇಪ್ಪತ್ತರಿಂದ ಐವತ್ತು ಪಟ್ಟು ವೇಗವಾಗಿ ಎನ್ಕೋಡಿಂಗ್ ಮಾಡುತ್ತವೆ ಮತ್ತು ಪಿಎನ್ಜಿಗೆ ಹೋಲಿಸಿದರೆ ಮೂರರಿಂದ ನಾಲ್ಕು ಪಟ್ಟು ವೇಗವಾಗಿ ಡಿಕೋಡಿಂಗ್ ವೇಗವನ್ನು ಹೊಂದಿರುತ್ತವೆ. ಲೇಖಕರು ಈ ವಿವರಣೆಯನ್ನು ಸಾರ್ವಜನಿಕ ವಲಯಕ್ಕೆ (ಸಿಸಿ0) ದಾನ ಮಾಡಿದ್ದಾರೆ. ಸಾಫ್ಟ್ವೇರ್ ಮತ್ತು ಭಾಷಾ ಬೆಂಬಲ ಕ್ಯೂಒಐ ಅನ್ನು ಇಮೇಜ್ಮ್ಯಾಜಿಕ್, ಇರ್ಫಾನ್ ವ್ಯೂ (ಆವೃತ್ತಿ 4.6ರಂತೆ), ಎಫ್ಎಫ್ಎಂಪಿಇಜಿ (ಆವೃತ್ತಿ 5.1ರಂತೆ), ಮತ್ತು ಗ್ರಾಫಿಕ್ ಕನ್ವರ್ಟರ್ (v11.8 +) ಸ್ಥಳೀಯವಾಗಿ ಬೆಂಬಲಿಸುತ್ತವೆ. ಸಮುದಾಯ ನಿರ್ಮಿತ ಪ್ಲಗ್ಇನ್ಗಳು ಜಿಐಎಂಪಿ, Paint.NET ಮತ್ತು ಎಕ್ಸ್ಎನ್ ವ್ಯೂ ಎಂಪಿಗಳಲ್ಲಿ ಲಭ್ಯವಿವೆ. ರಸ್ಟ್, ಪೈಥಾನ್, ಜಾವಾ, ಸಿ + +, ಸಿ #ಮತ್ತು ಹೆಚ್ಚಿನ ವಿವಿಧ ಭಾಷೆಗಳಿಗೆ ಅನುಷ್ಠಾನಗಳಿವೆ. ಪೂರ್ಣ ಪಟ್ಟಿಯನ್ನು ಯೋಜನೆಯ ಗಿಟ್ (ಹಬ್) ರೆಪೊಸಿಟರಿ READMEಯಲ್ಲಿ ಕಾಣಬಹುದು. ಕಡತ ಸ್ವರೂಪದ ಹೆಡರ್ ಒಂದು ಕ್ಯೂ. ಓ. ಐ. ಕಡತವು 14-ಬೈಟ್ ಹೆಡರ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಅದರ ನಂತರ ಯಾವುದೇ ಸಂಖ್ಯೆಯ ಡೇಟಾ "ಚಂಕ್ಸ್" ಮತ್ತು 8-ಬೈಟ್ ಎಂಡ್ ಮಾರ್ಕರ್ ಇರುತ್ತದೆ. qoi _ ಹೆಡರ್ {ಚಾರ್ ಮ್ಯಾಜಿಕ್ [4];// ಮ್ಯಾಜಿಕ್ ಬೈಟ್ಗಳು "qoif" uint32 _ t ಅಗಲ;// ಪಿಕ್ಸೆಲ್ಗಳಲ್ಲಿ ಚಿತ್ರದ ಅಗಲ (ಬಿಇ) uint32 _ t ಎತ್ತರ;// ಪಿಕ್ಸೆಲ್ಗಳಲ್ಲಿ ಚಿತ್ರದ ಎತ್ತರ (ಬಿಇ) uint8 _ t ಚಾನೆಲ್ಗಳು;// 3 = ಆರ್ಜಿಬಿ, 4 = ಆರ್ಜಿಬಿಎ uint8 _ t ಕಲರ್ಸ್ಪೇಸ್;// 0 = ರೇಖೀಯ ಆಲ್ಫಾ// 1 = ಎಲ್ಲಾ ಚಾನೆಲ್ಗಳ ರೇಖೀಯದೊಂದಿಗೆ ಎಸ್ಆರ್ಜಿಬಿ; ಬಣ್ಣಗಳ ಸ್ಥಳ ಮತ್ತು ಚಾನೆಲ್ ಕ್ಷೇತ್ರಗಳು ಸಂಪೂರ್ಣವಾಗಿ ಮಾಹಿತಿಪೂರ್ಣವಾಗಿವೆ. ದತ್ತಾಂಶ ಭಾಗಗಳನ್ನು ಎನ್ಕೋಡ್ ಮಾಡುವ ವಿಧಾನವನ್ನು ಅವು ಬದಲಾಯಿಸುವುದಿಲ್ಲ. ಎನ್ಕೋಡಿಂಗ್ ಚಿತ್ರಗಳನ್ನು ಸಾಲು ಸಾಲು, ಎಡದಿಂದ ಬಲಕ್ಕೆ, ಮೇಲಿನಿಂದ ಕೆಳಕ್ಕೆ ಎನ್ಕೋಡ್ ಮಾಡಲಾಗುತ್ತದೆ. ಡಿಕೋಡರ್ ಮತ್ತು ಎನ್ಕೋಡರ್ ಹಿಂದಿನ ಪಿಕ್ಸೆಲ್ ಮೌಲ್ಯದಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಎಲ್ಲಾ ಪಿಕ್ಸೆಲ್ಗಳನ್ನು ಮುಚ್ಚಿದಾಗ ಚಿತ್ರವು ಪೂರ್ಣಗೊಳ್ಳುತ್ತದೆ. ಪಿಕ್ಸೆಲ್ಗಳನ್ನು ಈ ರೀತಿ ಎನ್ಕೋಡ್ ಮಾಡಲಾಗಿದೆಃ ಹಿಂದಿನ ಪಿಕ್ಸೆಲ್ನ ರನ್-ಲೆಂಗ್ತ್ ಎನ್ಕೋಡಿಂಗ್ () ಹಿಂದೆ ನೋಡಿದ ಪಿಕ್ಸೆಲ್ಗಳ ಶ್ರೇಣಿಗೆ ಸೂಚ್ಯಂಕ () r, g, b (ಅಥವಾ) ಫುಲ್ r, g, b ಅಥವಾ r, g, b, a ಮೌಲ್ಯಗಳಲ್ಲಿ ಹಿಂದಿನ ಪಿಕ್ಸೆಲ್ ಮೌಲ್ಯಕ್ಕೆ ಹೋಲಿಸಿದರೆ ವ್ಯತ್ಯಾಸ (ಅಥವಾ) ಬಣ್ಣದ ಚಾನೆಲ್ಗಳನ್ನು ಆಲ್ಫಾ ಚಾನೆಲ್ನೊಂದಿಗೆ ("ಅನ್-ಪ್ರೀಮಿಪ್ಲಿಡ್ ಆಲ್ಫಾ") ಪೂರ್ವಭಾವಿಯಾಗಿ ಗುಣಿಸಲಾಗುವುದಿಲ್ಲ ಎಂದು ಭಾವಿಸಲಾಗಿದೆ. ಹಿಂದೆ ನೋಡಿದ ಪಿಕ್ಸೆಲ್ ಮೌಲ್ಯಗಳ ಚಾಲನೆಯನ್ನು (ಶೂನ್ಯ-ಆರಂಭಿಕ) ಎನ್ಕೋಡರ್ ಮತ್ತು ಡಿಕೋಡರ್ ನಿರ್ವಹಿಸುತ್ತದೆ. ಎನ್ಕೋಡರ್ ಮತ್ತು ಡಿಕೋಡರ್ ನೋಡುವ ಪ್ರತಿಯೊಂದು ಪಿಕ್ಸೆಲ್ ಅನ್ನು ಬಣ್ಣದ ಮೌಲ್ಯದ ಹ್ಯಾಶ್ ಕಾರ್ಯದಿಂದ ರೂಪುಗೊಂಡ ಸ್ಥಾನದಲ್ಲಿ ಈ ಶ್ರೇಣಿಯಲ್ಲಿ ಇರಿಸಲಾಗುತ್ತದೆ. ಎನ್ಕೋಡರ್ನಲ್ಲಿ, ಸೂಚ್ಯಂಕದಲ್ಲಿನ ಪಿಕ್ಸೆಲ್ ಮೌಲ್ಯವು ಪ್ರಸ್ತುತ ಪಿಕ್ಸೆಲ್ಗೆ ಹೊಂದಿಕೆಯಾದರೆ, ಈ ಸೂಚ್ಯಂಕದ ಸ್ಥಾನವನ್ನು ಸ್ಟ್ರೀಮ್ಗೆ ಹೀಗೆ ಬರೆಯಲಾಗುತ್ತದೆ. ಸೂಚ್ಯಂಕದ ಹ್ಯಾಶ್ ಕಾರ್ಯವೆಂದರೆಃ ಇಂಡೆಕ್ಸ್ _ ಪೊಸಿಷನ್ = (r * 3 + g * 5 + b * 7 + a * 11)% 64 ಪ್ರತಿ ಚಂಕವು 2-ಅಥವಾ 8-ಬಿಟ್ ಟ್ಯಾಗ್ನೊಂದಿಗೆ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ, ನಂತರ ಹಲವಾರು ಡೇಟಾ ಬಿಟ್ಗಳು. ತುಂಡುಗಳ ಬಿಟ್ ಉದ್ದವನ್ನು 8 ರಿಂದ ಭಾಗಿಸಬಹುದು-ಅಂದರೆ. ಎಲ್ಲಾ ಭಾಗಗಳನ್ನು ಬೈಟ್ ಜೋಡಿಸಲಾಗಿದೆ. ಈ ಡೇಟಾ ಬಿಟ್ಗಳಲ್ಲಿ ಎನ್ಕೋಡ್ ಮಾಡಲಾದ ಎಲ್ಲಾ ಮೌಲ್ಯಗಳು ಎಡಭಾಗದಲ್ಲಿ ಅತ್ಯಂತ ಗಮನಾರ್ಹವಾದ ಬಿಟ್ ಅನ್ನು ಹೊಂದಿರುತ್ತವೆ. 8-ಬಿಟ್ ಟ್ಯಾಗ್ಗಳು 2-ಬಿಟ್ ಟ್ಯಾಗ್ಗಳಿಗಿಂತ ಆದ್ಯತೆಯನ್ನು ಹೊಂದಿವೆ. ಡಿಕೋಡರ್ ಮೊದಲು 8-ಬಿಟ್ ಟ್ಯಾಗ್ನ ಉಪಸ್ಥಿತಿಯನ್ನು ಪರಿಶೀಲಿಸಬೇಕು. ಬೈಟ್ ಸ್ಟ್ರೀಮ್ನ ತುದಿಯನ್ನು 7 ಬೈಟ್ಗಳೊಂದಿಗೆ ಗುರುತಿಸಲಾಗಿದೆ ಮತ್ತು ನಂತರ ಒಂದೇ ಬೈಟ್ ಇದೆ. ಸಂಭಾವ್ಯ ಭಾಗಗಳೆಂದರೆಃ 8-ಬಿಟ್ ಟ್ಯಾಗ್ (254) 8-ಬಿಟ್ ಕೆಂಪು ಚಾನೆಲ್ ಮೌಲ್ಯ 8-ಬಿಟ್ ಹಸಿರು ಚಾನೆಲ್ ಮೌಲ್ಯ 8-ಬಿಟ್ ನೀಲಿ ಚಾನೆಲ್ ಮೌಲ್ಯ ಆಲ್ಫಾ ಮೌಲ್ಯವು ಹಿಂದಿನ ಪಿಕ್ಸೆಲ್ನಿಂದ ಬದಲಾಗದೆ ಉಳಿದಿದೆ. 8-ಬಿಟ್ ಟ್ಯಾಗ್ (255) 8-ಬಿಟ್ ಕೆಂಪು ಚಾನೆಲ್ ಮೌಲ್ಯ 8-ಬಿಟ್ ಹಸಿರು ಚಾನೆಲ್ ಮೌಲ್ಯ 8-ಬಿಟ್ ನೀಲಿ ಚಾನೆಲ್ ಮೌಲ್ಯ 8-ಬಿಟ್ ಆಲ್ಫಾ ಚಾನೆಲ್ ಮೌಲ್ಯ 2-ಬಿಟ್ ಟ್ಯಾಗ್ 6-ಬಿಟ್ ಸೂಚ್ಯಂಕವನ್ನು ಬಣ್ಣದ ಸೂಚ್ಯಂಕ ಶ್ರೇಣಿಯಲ್ಲಿಃ ಮಾನ್ಯ ಎನ್ಕೋಡರ್ ಒಂದೇ ಸೂಚ್ಯಂಕಕ್ಕೆ 2 ಅಥವಾ ಹೆಚ್ಚಿನ ಸತತ ಭಾಗಗಳನ್ನು ನೀಡಬಾರದು. ಬದಲಿಗೆ ಬಳಸಬೇಕು. ಹಿಂದಿನ ಪಿಕ್ಸೆಲ್ನಿಂದ ಹಿಂದಿನ ಪಿಕ್ಸೆಲ್ 2-ಬಿಟ್ ಹಸಿರು ಚಾನೆಲ್ ವ್ಯತ್ಯಾಸದಿಂದ 2-ಬಿಟ್ ಟ್ಯಾಗ್ 2-ಬಿಟ್ ಕೆಂಪು ಚಾನೆಲ್ ವ್ಯತ್ಯಾಸವು ಹಿಂದಿನ ಪಿಕ್ಸೆಲ್ನಿಂದ ಹಿಂದಿನ ಪಿಕ್ಸೆಲ್ 2-ಬಿಟ್ ನೀಲಿ ಚಾನೆಲ್ ವ್ಯತ್ಯಾಸವು ಪ್ರಸ್ತುತ ಚಾನೆಲ್ ಮೌಲ್ಯಗಳಿಗೆ ವ್ಯತ್ಯಾಸವು ಸುತ್ತುವ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಬಳಸುತ್ತಿದೆ, ಆದ್ದರಿಂದ 255 ಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ, ಆದರೆ 0 ಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಮೌಲ್ಯಗಳನ್ನು 2ರ ಪಕ್ಷಪಾತದೊಂದಿಗೆ ಸಹಿ ಮಾಡದ ಪೂರ್ಣಾಂಕಗಳಾಗಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ಇ. ಜಿ. −2 ಅನ್ನು 0 () ಎಂದು ಸಂಗ್ರಹಿಸಲಾಗಿದೆ. 1 ಅನ್ನು 3 () ಎಂದು ಸಂಗ್ರಹಿಸಲಾಗಿದೆ. ಆಲ್ಫಾ ಮೌಲ್ಯವು ಹಿಂದಿನ ಪಿಕ್ಸೆಲ್ನಿಂದ ಬದಲಾಗದೆ ಉಳಿದಿದೆ. ಹಿಂದಿನ ಪಿಕ್ಸೆಲ್ 4-ಬಿಟ್ ಕೆಂಪು ಚಾನೆಲ್ ವ್ಯತ್ಯಾಸದಿಂದ 2-ಬಿಟ್ ಟ್ಯಾಗ್ 6-ಬಿಟ್ ಹಸಿರು ಚಾನೆಲ್ ವ್ಯತ್ಯಾಸ ಮೈನಸ್ ಹಸಿರು ಚಾನೆಲ್ ವ್ಯತ್ಯಾಸ 4-ಬಿಟ್ ನೀಲಿ ಚಾನೆಲ್ ವ್ಯತ್ಯಾಸ ಮೈನಸ್ ಹಸಿರು ಚಾನೆಲ್ ವ್ಯತ್ಯಾಸ ಬದಲಾವಣೆಯ ಸಾಮಾನ್ಯ ದಿಕ್ಕನ್ನು ಸೂಚಿಸಲು ಹಸಿರು ಚಾನೆಲ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ ಮತ್ತು ಇದನ್ನು 6 ಬಿಟ್ಗಳಲ್ಲಿ ಎನ್ಕೋಡ್ ಮಾಡಲಾಗಿದೆ. ಕೆಂಪು ಮತ್ತು ನೀಲಿ ಕಾಲುವೆಗಳು (ಡಿಆರ್ ಮತ್ತು ಡಿಬಿ) ಹಸಿರು ಕಾಲುವೆ ವ್ಯತ್ಯಾಸದಿಂದ ತಮ್ಮ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಆಧರಿಸಿವೆ. ಐ. ಇ. : dr _ dg = (cur_px.r-prev_px.r)-(cur_px.g-prev_px.g) db _ dg = (cur_px.b-prev_px.b)-(cur_px.g-prev_px.g) ಪ್ರಸ್ತುತ ಚಾನೆಲ್ ಮೌಲ್ಯಗಳ ವ್ಯತ್ಯಾಸವು ಸುತ್ತುವ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಬಳಸುತ್ತಿದೆ, ಆದ್ದರಿಂದ 253 ಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ, ಆದರೆ 1 ಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ. ಹಸಿರು ಚಾನಲ್ಗೆ 32 ಪಕ್ಷಪಾತ ಮತ್ತು ಕೆಂಪು ಮತ್ತು ನೀಲಿ ಚಾನಲ್ಗೆ 8 ಪಕ್ಷಪಾತದೊಂದಿಗೆ ಸಹಿ ಮಾಡದ ಪೂರ್ಣಾಂಕಗಳಾಗಿ ಮೌಲ್ಯಗಳನ್ನು ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ಆಲ್ಫಾ ಮೌಲ್ಯವು ಹಿಂದಿನ ಪಿಕ್ಸೆಲ್ನಿಂದ ಬದಲಾಗದೆ ಉಳಿದಿದೆ. 2-ಬಿಟ್ ಟ್ಯಾಗ್ 6-ಬಿಟ್ ರನ್-ಉದ್ದ ಹಿಂದಿನ ಪಿಕ್ಸೆಲ್ ಅನ್ನು ಪುನರಾವರ್ತಿಸುತ್ತದೆ ರನ್-ಉದ್ದವನ್ನು −1 ಪಕ್ಷಪಾತದೊಂದಿಗೆ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. 63 ಮತ್ತು 64 (ಮತ್ತು) ರ ಉದ್ದಗಳು ಮತ್ತು ಟ್ಯಾಗ್ಗಳಿಂದ ಆಕ್ರಮಿಸಲ್ಪಟ್ಟಿರುವುದರಿಂದ ಅವು ಕಾನೂನುಬಾಹಿರವಾಗಿವೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ. ಉಲ್ಲೇಖಗಳು ಬಾಹ್ಯ ಕೊಂಡಿಗಳು ಫಾರ್ಮ್ಯಾಟ್ ವೆಬ್ಸೈಟ್ಃ ಸಿ ಸೋರ್ಸ್ ಕೋಡ್ ಮತ್ತು ಬೆಂಚ್ಮಾರ್ಕ್ ಫಲಿತಾಂಶಗಳು 1 ಪುಟ ಪಿಡಿಎಫ್ ವಿವರಣೆ ಗಿಟ್ಹಬ್ ರೆಪೊಸಿಟರಿ (ಸಿ ಅನುಷ್ಠಾನ ಸೇರಿದಂತೆ) 2021ರ ಗ್ರಾಫಿಕ್ಸ್ ಮಾನದಂಡಗಳಲ್ಲಿ ಕಂಪ್ಯೂಟರ್-ಸಂಬಂಧಿತ ಪರಿಚಯಗಳು ಚಿತ್ರ ಸಂಕೋಚನ ಓಪನ್ ಫಾರ್ಮ್ಯಾಟ್ಗಳು ರಾಸ್ಟರ್ ಗ್ರಾಫಿಕ್ಸ್ ಫೈಲ್ ಫಾರ್ಮ್ಯಾಟ್ಗಳು