JPEG. ಕಂಪ್ರೆಷನ್ ಅಲ್ಗಾರಿದಮ್

ಮತ್ತೆ ನಮಸ್ಕಾರಗಳು! ಈ ಲೇಖನವನ್ನು ಮೇ 2019 ರಲ್ಲಿ ಬರೆಯಲಾಗಿದೆ ಎಂದು ನಾನು ಕಂಡುಕೊಂಡೆ. ಇದು WAVE ಮತ್ತು JPEG ಕುರಿತು ಲೇಖನಗಳ ಸರಣಿಯ ಮುಂದುವರಿಕೆಯಾಗಿದೆ, ಇಲ್ಲಿ ಮೊದಲು. ಈ ಪ್ರಕಟಣೆಯು ಇಮೇಜ್ ಎನ್‌ಕೋಡಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ ಮತ್ತು ಒಟ್ಟಾರೆಯಾಗಿ ಸ್ವರೂಪದ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.

ಇತಿಹಾಸದ ಒಂದು ಚಿಟಿಕೆ

ಒಂದು ಚಮಚ ವಿಕಿಪೀಡಿಯಾ ಲೇಖನ:

JPEG (ಜಂಟಿ ಫೋಟೋಗ್ರಾಫಿಕ್ ಎಕ್ಸ್‌ಪರ್ಟ್ಸ್ ಗ್ರೂಪ್) ಛಾಯಾಚಿತ್ರಗಳು ಮತ್ತು ಅಂತಹುದೇ ಚಿತ್ರಗಳನ್ನು ಸಂಗ್ರಹಿಸಲು ಬಳಸಲಾಗುವ ಜನಪ್ರಿಯ ರಾಸ್ಟರ್ ಗ್ರಾಫಿಕ್ಸ್ ಫಾರ್ಮ್ಯಾಟ್‌ಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ.

1991 ರಲ್ಲಿ ದಕ್ಷ ಇಮೇಜ್ ಕಂಪ್ರೆಷನ್‌ಗಾಗಿ ಈ ಮಾನದಂಡವನ್ನು ಜಂಟಿ ಫೋಟೋಗ್ರಾಫಿಕ್ ಎಕ್ಸ್‌ಪರ್ಟ್ಸ್ ಗ್ರೂಪ್ ಅಭಿವೃದ್ಧಿಪಡಿಸಿದೆ.

ಚಿತ್ರಗಳು ಕಚ್ಚಾದಿಂದ JPEG ಗೆ ಹೇಗೆ ಹೋಗುತ್ತವೆ?

JPEG ಚಿತ್ರಗಳು ಹಫ್‌ಮನ್ ವಿಧಾನವನ್ನು ಬಳಸಿಕೊಂಡು ಕಚ್ಚಾ ಡೇಟಾವನ್ನು ಸಂಕುಚಿತಗೊಳಿಸಲಾಗಿದೆ ಎಂದು ಕೆಲವರು ಭಾವಿಸುತ್ತಾರೆ, ಆದರೆ ಇದು ನಿಜವಲ್ಲ. ಕಂಟ್ರೋಲ್ ಕಂಪ್ರೆಷನ್ ಮೊದಲು, ಡೇಟಾ ದೂರದ ಪ್ರಯಾಣ.

ಮೊದಲಿಗೆ, ಬಣ್ಣದ ಮಾದರಿಯನ್ನು RGB ಯಿಂದ YCbCr ಗೆ ಬದಲಾಯಿಸಲಾಗಿದೆ. ಇದಕ್ಕಾಗಿ ವಿಶೇಷ ಅಲ್ಗಾರಿದಮ್ ಕೂಡ ಇದೆ - ಇಲ್ಲಿ. Y ಅನ್ನು ಸ್ಪರ್ಶಿಸಲಾಗಿಲ್ಲ, ಏಕೆಂದರೆ ಅದು ಹೊಳಪಿಗೆ ಕಾರಣವಾಗಿದೆ ಮತ್ತು ಅದರ ಬದಲಾವಣೆಯು ಗಮನಾರ್ಹವಾಗಿರುತ್ತದೆ.

ಚಿತ್ರದೊಂದಿಗೆ ಮಾಡಬೇಕಾದ ಮೊದಲ ವಿಷಯ "ತೆಳುವಾಗುವುದು" (ಉಪ ಮಾದರಿ). ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಸುಲಭ: 2x2 ಶ್ರೇಣಿಯ ಪಿಕ್ಸೆಲ್‌ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲಾಗುತ್ತದೆ, ನಂತರ Cb ಮತ್ತು Cr ತೆಗೆದುಕೊಳ್ಳಲಾಗುತ್ತದೆ - ಈ 4 ಪಿಕ್ಸೆಲ್‌ಗಳ ಪ್ರತಿಯೊಂದು YCbCr ಘಟಕಗಳ ಸರಾಸರಿ ಮೌಲ್ಯಗಳು. ಆದ್ದರಿಂದ, ನಾವು 6 ಬೈಟ್‌ಗಳನ್ನು ಗೆದ್ದಿದ್ದೇವೆ, 4 Y, 4 Cb, 4 Cr ಬದಲಿಗೆ ನಾವು 4 Y ಮತ್ತು ಪ್ರತಿಯೊಂದಕ್ಕೂ ಒಂದೇ Cb ಮತ್ತು Cr ಅನ್ನು ಪಡೆದುಕೊಂಡಿದ್ದೇವೆ (4 + 4 + 4 = 12; 4 + 1 + 1 = 6; 12 - 6 = 6). 2x2 ಸ್ಕೇಲ್‌ನಲ್ಲಿ, 2:1 ಕಂಪ್ರೆಷನ್ ಅನುಪಾತದೊಂದಿಗೆ ಲಾಸಿ ಕಂಪ್ರೆಷನ್ ಘನವಾಗಿ ಧ್ವನಿಸುತ್ತದೆ. ಇದು ಇಡೀ ಚಿತ್ರಕ್ಕೆ ಅನ್ವಯಿಸುತ್ತದೆ. ಮತ್ತು ಆದ್ದರಿಂದ - ಅವರು ಅರ್ಧ ಗಾತ್ರವನ್ನು ಕೈಬಿಟ್ಟರು. ಮತ್ತು ನಮ್ಮ ಬಣ್ಣ ಗ್ರಹಿಕೆಗೆ ಧನ್ಯವಾದಗಳು ನಾವು ಈ ತಂತ್ರವನ್ನು ಬಳಸಬಹುದು. ಒಬ್ಬ ವ್ಯಕ್ತಿಯು ಪ್ರಕಾಶಮಾನತೆಯ ವ್ಯತ್ಯಾಸವನ್ನು ಸುಲಭವಾಗಿ ಗಮನಿಸಬಹುದು, ಆದರೆ ಬಣ್ಣದಲ್ಲಿ ಅಲ್ಲ, ಇದು ಪಿಕ್ಸೆಲ್ಗಳ ಸಣ್ಣ ಬ್ಲಾಕ್ನಲ್ಲಿ ಸರಾಸರಿಯಾಗಿದ್ದರೆ. ತೆಳುವಾಗುವುದನ್ನು ಒಂದು ಸಾಲಿನಲ್ಲಿ, 4 ಪಿಕ್ಸೆಲ್‌ಗಳನ್ನು ಅಡ್ಡಲಾಗಿ ಮತ್ತು ಲಂಬವಾಗಿ ಮಾಡಬಹುದು. ಮೊದಲ ಆಯ್ಕೆಯನ್ನು ಹೆಚ್ಚಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಚಿತ್ರದ ಗುಣಮಟ್ಟವು ಮುಖ್ಯವಾಗಿದ್ದರೆ, ಡೆಸಿಮೇಷನ್ ಅನ್ನು ನಿರ್ವಹಿಸಲಾಗುವುದಿಲ್ಲ.
ತೆಳುವಾಗುವುದರ ಒಂದು ದೃಶ್ಯ ವಿವರಣೆ (Habr ನನಗೆ gif ಅನ್ನು ಸೇರಿಸಲು ಅನುಮತಿಸಲಿಲ್ಲ) - https://i.ibb.co/Rg5Th9H/150953010617579181.gif

ತಯಾರಿಕೆಯ ಮುಖ್ಯ ಭಾಗ

ಡಿಕೆಪಿ

ಈಗ ಕಠಿಣ ಮತ್ತು ಅತ್ಯಂತ ಅಗತ್ಯವಾದ ಭಾಗ ಬರುತ್ತದೆ. ಸಂಪೂರ್ಣ ಚಿತ್ರವನ್ನು 8x8 ಬ್ಲಾಕ್‌ಗಳಾಗಿ ವಿಂಗಡಿಸಲಾಗಿದೆ (ರೆಸಲ್ಯೂಶನ್ ಬ್ಲಾಕ್ ಬದಿಯ ಬಹುಸಂಖ್ಯೆಯಲ್ಲದಿದ್ದರೆ ತುಂಬುವಿಕೆಯನ್ನು ಬಳಸಲಾಗುತ್ತದೆ).

ಈಗ ಪ್ರತಿ ಬ್ಲಾಕ್ಗೆ ಅನ್ವಯಿಸಿ ಡಿಸಿಟಿ (ಡಿಸ್ಕ್ರೀಟ್ ಕೊಸೈನ್ ಟ್ರಾನ್ಸ್‌ಫಾರ್ಮ್). ಈ ಭಾಗದಲ್ಲಿ, ಅನಗತ್ಯವಾದ ಎಲ್ಲವನ್ನೂ ಚಿತ್ರದಿಂದ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ. DCT ಬಳಸಿಕೊಂಡು, ನೀಡಿರುವ ಬ್ಲಾಕ್ (8×8) ಚಿತ್ರದ ಯಾವುದೇ ಏಕತಾನತೆಯ ಭಾಗವನ್ನು ವಿವರಿಸುತ್ತದೆಯೇ ಎಂಬುದನ್ನು ನೀವು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಬೇಕು: ಆಕಾಶ, ಗೋಡೆ; ಅಥವಾ ಇದು ಸಂಕೀರ್ಣ ರಚನೆಯನ್ನು ಹೊಂದಿರುತ್ತದೆ (ಕೂದಲು, ಚಿಹ್ನೆಗಳು, ಇತ್ಯಾದಿ). ಒಂದೇ ರೀತಿಯ ಬಣ್ಣದ 64 ಪಿಕ್ಸೆಲ್‌ಗಳನ್ನು ಕೇವಲ 1 ರಿಂದ ವಿವರಿಸಬಹುದು ಎಂಬುದು ತಾರ್ಕಿಕವಾಗಿದೆ, ಏಕೆಂದರೆ ಬ್ಲಾಕ್ ಗಾತ್ರವು ಈಗಾಗಲೇ ತಿಳಿದಿದೆ. ಸಂಕೋಚನಕ್ಕಾಗಿ ತುಂಬಾ: 64 ರಿಂದ 1.

ಡಿಸಿಟಿ ಬ್ಲಾಕ್ ಅನ್ನು ಸ್ಪೆಕ್ಟ್ರಮ್ ಆಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ ಮತ್ತು ಅಲ್ಲಿ ವಾಚನಗೋಷ್ಠಿಗಳು ತೀವ್ರವಾಗಿ ಬದಲಾಗುತ್ತವೆ, ಗುಣಾಂಕವು ಧನಾತ್ಮಕವಾಗಿರುತ್ತದೆ ಮತ್ತು ತೀಕ್ಷ್ಣವಾದ ಪರಿವರ್ತನೆ, ಹೆಚ್ಚಿನ ಔಟ್ಪುಟ್ ಇರುತ್ತದೆ. ಗುಣಾಂಕವು ಹೆಚ್ಚಿರುವಲ್ಲಿ, ಚಿತ್ರವು ಬಣ್ಣ ಮತ್ತು ಹೊಳಪಿನಲ್ಲಿ ಸ್ಪಷ್ಟ ಪರಿವರ್ತನೆಗಳನ್ನು ತೋರಿಸುತ್ತದೆ, ಅಲ್ಲಿ ಅದು ಕಡಿಮೆಯಾಗಿದೆ - ಬ್ಲಾಕ್ನಲ್ಲಿನ YCbCr ಘಟಕಗಳ ಮೌಲ್ಯಗಳಲ್ಲಿ ದುರ್ಬಲ (ನಯವಾದ) ಬದಲಾವಣೆಗಳು.

ಪ್ರಮಾಣೀಕರಣ

ಸಂಕೋಚನ ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು ಈಗಾಗಲೇ ಇಲ್ಲಿ ಅನ್ವಯಿಸಲಾಗಿದೆ. 8x8 ಮ್ಯಾಟ್ರಿಕ್ಸ್‌ಗಳಲ್ಲಿ ಪ್ರತಿಯೊಂದು ಗುಣಾಂಕಗಳನ್ನು ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯಿಂದ ಭಾಗಿಸಲಾಗಿದೆ. ಅದರ ಎಲ್ಲಾ ಮಾರ್ಪಾಡುಗಳ ನಂತರ ನೀವು ಚಿತ್ರದ ಗುಣಮಟ್ಟವನ್ನು ಕಡಿಮೆ ಮಾಡದಿದ್ದರೆ, ವಿಭಾಜಕವು ಒಂದಾಗಿರಬೇಕು. ಈ ಫೋಟೋದಿಂದ ಆಕ್ರಮಿಸಿಕೊಂಡಿರುವ ಮೆಮೊರಿಯು ನಿಮಗೆ ಹೆಚ್ಚು ಮುಖ್ಯವಾಗಿದ್ದರೆ, ವಿಭಾಜಕವು 1 ಕ್ಕಿಂತ ಹೆಚ್ಚಾಗಿರುತ್ತದೆ ಮತ್ತು ಅಂಶವು ದುಂಡಾಗಿರುತ್ತದೆ. ಪೂರ್ಣಾಂಕದ ನಂತರ ನೀವು ಸಾಮಾನ್ಯವಾಗಿ ಬಹಳಷ್ಟು ಸೊನ್ನೆಗಳೊಂದಿಗೆ ಕೊನೆಗೊಳ್ಳುತ್ತೀರಿ ಎಂದು ಅದು ತಿರುಗುತ್ತದೆ.

ಇನ್ನೂ ಹೆಚ್ಚಿನ ಸಂಕೋಚನದ ಸಾಧ್ಯತೆಯನ್ನು ಸೃಷ್ಟಿಸಲು ಪರಿಮಾಣೀಕರಣವನ್ನು ಮಾಡಲಾಗುತ್ತದೆ. ಗ್ರಾಫ್ y = sin(x) ಅನ್ನು ಕ್ವಾಂಟೈಸ್ ಮಾಡುವ ಉದಾಹರಣೆಯನ್ನು ಬಳಸಿಕೊಂಡು ಅದು ಹೇಗೆ ಕಾಣುತ್ತದೆ:

JPEG. ಕಂಪ್ರೆಷನ್ ಅಲ್ಗಾರಿದಮ್

ಸಂಕೋಚನ

ಮೊದಲು ನಾವು ಅಂಕುಡೊಂಕಾದ ಮಾದರಿಯಲ್ಲಿ ಮ್ಯಾಟ್ರಿಕ್ಸ್ ಮೂಲಕ ಹೋಗುತ್ತೇವೆ:

JPEG. ಕಂಪ್ರೆಷನ್ ಅಲ್ಗಾರಿದಮ್

ನಾವು ಸಂಖ್ಯೆಗಳೊಂದಿಗೆ ಒಂದು ಆಯಾಮದ ಶ್ರೇಣಿಯನ್ನು ಪಡೆಯುತ್ತೇವೆ. ಅದರಲ್ಲಿ ಬಹಳಷ್ಟು ಸೊನ್ನೆಗಳಿವೆ ಎಂದು ನಾವು ನೋಡುತ್ತೇವೆ, ಅವುಗಳನ್ನು ತೆಗೆದುಹಾಕಬಹುದು. ಇದನ್ನು ಮಾಡಲು, ಅನೇಕ ಸೊನ್ನೆಗಳ ಅನುಕ್ರಮದ ಬದಲಿಗೆ, ನಾವು 1 ಶೂನ್ಯವನ್ನು ನಮೂದಿಸಿ ಮತ್ತು ಅದರ ನಂತರ ಅನುಕ್ರಮದಲ್ಲಿ ಅವರ ಸಂಖ್ಯೆಯನ್ನು ಸೂಚಿಸುವ ಸಂಖ್ಯೆಯನ್ನು ನಮೂದಿಸಿ. ಈ ರೀತಿಯಲ್ಲಿ ನೀವು ಸಂಪೂರ್ಣ ರಚನೆಯ ಗಾತ್ರದ 1/3 ಗೆ ಮರುಹೊಂದಿಸಬಹುದು. ತದನಂತರ ನಾವು ಹಫ್‌ಮನ್ ವಿಧಾನವನ್ನು ಬಳಸಿಕೊಂಡು ಈ ಶ್ರೇಣಿಯನ್ನು ಸರಳವಾಗಿ ಸಂಕುಚಿತಗೊಳಿಸುತ್ತೇವೆ ಮತ್ತು ಅದನ್ನು ಫೈಲ್‌ಗೆ ಬರೆಯುತ್ತೇವೆ.

ಎಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ

ಎಲ್ಲೆಲ್ಲೂ. PNG ನಂತೆ, JPEG ಅನ್ನು ಕ್ಯಾಮೆರಾಗಳು, OS ಗಳಲ್ಲಿ (ಕಂಪೆನಿಯ ಲೋಗೋಗಳು, ಅಪ್ಲಿಕೇಶನ್ ಐಕಾನ್‌ಗಳು, ಥಂಬ್‌ನೇಲ್‌ಗಳಾಗಿ) ಮತ್ತು ಚಿತ್ರಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಸಂಗ್ರಹಿಸಬೇಕಾದ ಎಲ್ಲಾ ಸಂಭಾವ್ಯ ಪ್ರದೇಶಗಳಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ.

ತೀರ್ಮಾನಕ್ಕೆ

ಈ ಸಮಯದಲ್ಲಿ, JPEG ಬಗ್ಗೆ ಜ್ಞಾನವು ಈಗ ಶೈಕ್ಷಣಿಕ ಉದ್ದೇಶಗಳಿಗಾಗಿ ಮಾತ್ರ ಮೌಲ್ಯಯುತವಾಗಿದೆ, ಏಕೆಂದರೆ ಇದು ಈಗಾಗಲೇ ಎಲ್ಲೆಡೆ ನಿರ್ಮಿಸಲ್ಪಟ್ಟಿದೆ ಮತ್ತು ಜನರ ದೊಡ್ಡ ಗುಂಪುಗಳಿಂದ ಹೊಂದುವಂತೆ ಮಾಡಲಾಗಿದೆ, ಆದರೆ ವಿಜ್ಞಾನದ ಗ್ರಾನೈಟ್ ಇನ್ನೂ ರುಚಿಕರವಾಗಿದೆ.

ಮೂಲಗಳು

ವಿಕಿಪೀಡಿಯಾದಲ್ಲಿ YCbCr ಕುರಿತು ಲೇಖನ
JPEG ನಲ್ಲಿ ವಿಕಿಪೀಡಿಯ ಲೇಖನ
Pikabu ಪೋಸ್ಟ್‌ನಿಂದ PrEP ಬಗ್ಗೆ ಸ್ವಲ್ಪ
PrEP ಕುರಿತು ವಿಕಿಪೀಡಿಯ ಲೇಖನ

ಮೂಲ: www.habr.com

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ