PDA

View Full Version : Giả thiết của tôi: ảnh càng sáng càng nặng!


Mắt Đêm
18-05-2005, 19:17
Cái này tôi chưa đọc được ở tài liệu nào cả, nhưng mà theo một số điều tôi biết thì xin đặt ra một giả thiết như thế này: Càng cho ảnh sáng lên thì ảnh càng nặng (ở một giới hạn nào đó thôi, các số liệu cụ thể thì tôi chưa biết tính).

"Dot" - một điểm trên màn hình chính là 1 pixel, và mỗi pixel thì chiếm 1 bit.
1 bit thì bao gồm 2 trạng thái là "0" và "1", tức "không" và "có", hoặc trên phương diện màu sắc thì nó là "đen" và "trắng".

Tạm lấy ví dụ về 1 byte (tức 8 bits).
Trên 1 byte, có thể xác định được (2^7)+(2^6)+(2^5)+(2^4)+(2^3)+(2^2)+(2^1)+(2^0)= 256 thông tin, chạy từ giá trị 0 tới 255.
Cụ thể:
0 = 0
1 = 1
10 = 2
11 = 3
100 = 4
...
10000000 = 128
...
11111111 = 255

Và như thế, càng nhiều số 1, càng chiếm nhiều bộ nhớ.
Đó là vấn đề chuyển đổi từ hệ thập phân sang nhị phân.

Giờ nói về các màu trong ảnh. Cứ tạm nói đến màu cho web cho đơn giản.
Màu cho web gồm từ #000000 tới #FFFFFF.
Các số này là số ở hệ cơ số 16 (hệ thập lục phân), có 16 giá trị: từ 0 tới 15.
Cụ thể:
0000 = 0
0001 = 1
0010 = 2
0011 = 3
0100 = 4
...
0111 = 7
1000 = 8
1001 = 9
A (tức 1010) = 10
B (tức 1011) = 11
C (tức 1100) = 12
D (tức 1101) = 13
E (tức 1110) = 14
F (tức 1111) = 15

Như thế, nếu màu đen là #000000 thì tức là: 0000 0000 0000 0000 0000 0000
Và màu trắng là #FFFFFF thì tức là: 1111 1111 1111 1111 1111 1111

---> Nếu như tăng ánh sáng cho ảnh thì tức là màu nó nghiêng dần về mảng trắng --> sẽ tăng thêm dung lượng. Không xét trường hợp ảnh quá mờ, hoặc là hoàn toàn trắng, bởi:
Khi chuyển từ ảnh ra dạng số ở hệ cơ số 16, tôi thấy ảnh được qui định theo cách: Ngay ở đầu file có 3 kí tự qui định kiểu ảnh, ví dụ JPG, BMP..., tiếp theo là các số ở hệ cơ số 16, nó qui định lần lượt: kích thước ảnh, giới hạn thông tin vẽ nên ảnh là từ số thứ mấy tới số thứ mấy trong dãy số ấy, v.v...
Như thế nếu là 1 cái ảnh bình thường, khi tăng màu sáng lên thì một mặt nó vẫn giữ cấu trúc phân bố thông tin để vẽ nên ảnh, dung lượng chỗ ấy vẫn nguyên, ngoài ra nó tăng thông tin về màu của ảnh --> càng nghiêng về trắng thì càng nhiều chữ "F". Trái lại, nếu như là 1 ảnh trắng tinh, không có gì hết, hoặc là ảnh quá mờ, thì mã trong ảnh sẽ đơn giản chỉ có là: kích thước ảnh, vị trí những điểm có màu sắc, giới hạn thông tin để vẽ nên ảnh.. --> hầu như không đáng kể so với trường hợp trên ---> ảnh nhẹ là phải :)

Xin nhắc lại, đây chỉ là giả thiết, nếu ai phát hiện ra cái sai thì cứ vào thảo luận nhé! nhưng mà nhìn chung, tự tôi nói, tôi thấy có lí :mrgreen:

(Hiện nay chưa có cái gì chứng minh là cái này đúng 100%, nhưng các bạn có thể thử với avatar của mình, tăng ánh sáng ảnh lên chút xíu nhìn cho dễ chịu --> thế nào cũng nặng thêm vài bytes. Tôi có cảm hứng viết bài này là bởi mấy lần ngồi cắt avatar xong thấy nó vừa vặn, chỉ muốn tăng ánh sáng một tí thôi mà nó tăng thêm tới mấy chục bytes, thế là lại phải resize cho cỡ nhỏ xuống :()

Mắt Đêm
18-05-2005, 19:39
huynh đài sai rồi, tăng ánh sáng lên ảnh nặng không phải vì màu càng sáng càng nặng, mà việc tăng ánh sáng dựa trên nguyên tắc đè các pixel sáng màu lên nền cũ, vì vậy mà ảnh bị tăng kích thước
Hờ, xin lỗi, tôi chưa từng nghe tới khái niệm đè pixel màu này lên pixel màu khác đấy :cuoilon: Cho tôi hỏi, máy tính nó hoạt động dựa trên nguyên lí "có điện" - "mất điện", tức là trạng thái "tắt" - "bật" theo hệ nhị phân, thế làm thế nào để nó bảo chương trình "đè pixel" màu này lên màu kia ;) tôi chỉ biết có sự tích hợp số của các màu để tạo ra một màu mới thôi.

Mắt Đêm
18-05-2005, 20:01
ô hô, thế không phải sao, là ta đoán vậy, vì mỗi màu 8 bit, không thể có chuyện màu sắc này lại "nặng" hơn màu sắc khác được, chắc chắn phải có nguyên nhân khác
Tại sao lại không thể ?

Tôi xin phân tích rõ hơn phần nhị phân: Lấy tạm 1 byte ra để phân tích.
Gọi dãy số 1 byte ấy là abcdefgh (gồm 8 số).
Với:
h --> 2^0 = 1
g --> 2^1 = 2
f --> 2^2 = 4
e --> 2^3 = 8
d --> 2^4 = 16
c --> 2^5 = 32
b --> 2^6 = 64
a --> 2^7 = 128
---> Càng có số 1 đi về phía bên trái thì số càng lớn.

Màu sắc cho web là sự kết hợp của 3 lớp màu: đỏ, xanh lá cây, xanh da trời.
- Nếu sắc đỏ tăng lên hết cỡ, 2 màu kia giảm hết cỡ, ta được: #FF0000 --> màu đỏ.
- Nếu sắc xanh lá cây tăng hết cỡ, 2 màu kia giảm hết cỡ, ta được: #00FF00 --> màu xanh lá cây.
- Tương tự: #0000FF --> màu xanh da trời.

Sự giảm cả 3 màu xuống sẽ cho ta #000000 --> màu đen.
Tăng các màu tùy ý thì sẽ cho nhiều màu khác nhau. Và tăng cả 3 màu lên cao nhất thì sẽ cho #FFFFFF --> màu trắng.

Và như thế, xin nhắc lại việc đổi thông số hệ thập lục phân của màu sắc này ra thành thông số ở hệ nhị phân:
#000000 = 0000 0000 0000 0000 0000 0000
#FFFFFF = 1111 1111 1111 1111 1111 1111

Lại đi ngược lên lí thuyết về số ở hệ cơ số 16 mà tôi đã viết ở trên:
0000 (0) = 0 ở hệ cơ số 10
0001 (1) = 1
...
1010 (A) = 10
...
1111 (F) = 15

Thế tôi hỏi huynh, 0 và 15 thì số nào lớn hơn ? Trả lời câu hỏi này, và huynh nhìn lại xem #000000 và #FFFFFF nó hơn kém nhau tới mức nào nhé :)

Mắt Đêm
18-05-2005, 20:15
Hơ, vừa thấy thêm 1 chỗ sai nữa:
vì mỗi màu 8 bit
---> Sai rồi, ai nói mỗi màu là 8 bits ;) tôi chỉ lấy ví dụ 1 byte ra để nói cho mọi người thấy thôi. Còn màu sắc cho web thì mỗi màu dự trữ 24 bits, tức là 3 bytes cơ ;) Tuy nhiên không phải cứ dự trữ là dùng hết, chính vì thế mới có chuyện màu càng sáng thì càng chiếm nhiều.

Mắt Đêm
18-05-2005, 22:05
Ừm, cảm ơn nhé, cái nì tôi tự nhiên hứng lên mà viết thôi, nhưng nếu được chỉ giáo thêm thì rất vui lòng! :)

bibi
18-05-2005, 22:17
Hình ảnh bitmap được lưu dưới dạng phân điểm ảnh và trong cấu trúc file ảnh đó phải lưu lại từng thông tin về từng điểm ảnh
Giá trị màu sắc của mỗi điểm ảnh & "độ sâu"(*) của mỗi điểm ảnh đó (thống nhất cho tất cả các điểm ảnh, được thiết lập trong phần header info của ảnh)
+ Mức độ phân điểm ảnh tùy thuộc vào thiết bị chụp hay scan, mức độ phân điểm ảnh càng lớn thì hình ảnh càng "mịn"(hay nói rõ hơn là càng có khả năng phóng to hình ảnh và các chi tiết hình ảnh được đầy đủ hơn) tuy nhiên file ảnh sẽ phình to vì phải lưu nhiều thông tin về điểm ảnh hơn.
+ Ta thường hay nghe hình này 8 bit, hình kia 16 bit hay 24 bit... Đó chính là độ sâu màu. "Độ sâu" màu là khỏang chia hay khả năng thể hiện độ màu của mỗi phân điểm đó. Độ sâu này càng lớn thì màu sắc hình ảnh càng đẹp tuy nhiên cũng sẽ làm file phình to ra đấy.Vd hình 8 bit thì ta phải dùng 1 byte(1byte=8bit) để lưu trữ cho một điểm, nhưng 24 bit thì ta phải dùng tới 3 bytes lận đó. Hình 8 bit thể hiện được 2^8=256 màu tại mỗi điểm ảnh, Hình 24 bit thể hiện được 2^24=16777216 màu tại mỗi điểm ảnh. Như vậy rõ ràng về màu sắc thì hình 24 bit đẹp hơn nhiều.

Đối với hình vectơ thì người ta lưu thông tin của hình vào file dưới dạng các thông số ứng với mỗi loại công thức ví dụ Hình vuông thì chỉ cần lưu thông số của một cạnh hình vuông ví dụ hình vuông dài khoảng 100pixels tốn khỏang 2-4bytes(tùy thuộc người ta quy ước) cộng với mã số đi kèm để cho máy biết đây là hình vuông và cần khoảng 1-2 bytes để lưu thông số này. Như vậy máy chỉ cần lưu khỏang 6 bytes để vẽ hình vuông thôi. nếu hình này mà là hình BITMAP thì ôi thôi khủng khiếp máy phải lưu từng điểm cho hình vuông. Tính sơ sơ cũng lên đến 100x100=10000 bytes(nếu là hình bitmap ko nén) ....Đó là chưa kể hình vectơ thì phóng to vô tư mà vẫn đẹp, hình bitmap làm thế sẽ bị mẻ hình đó...
Đó là vài ví dụ mang tính minh họa về nguyên lý lưu hình ảnh của hình bitmap và vectơ. Trong thực tế còn phức tạp hơn nhưng cơ bản vẫn là vậy.
Tùy thuộc vào đối tượng hình ảnh mà dùng loại ảnh tương ứng. Hình vectơ chỉ áp dụng cho các hình vẽ trên máy tính thôi vì chỉ có hình vẽ thì người ta mới có các công thức hình học tương ứng mà thể hiện nó chứ. Hình vectơ thì có thể chuyển sang dạng hình bitmap vô tư . Nhưng hình bitmap rất khó chuyển sang hình vectơ.
Thật ra về dung lượng lưu trữ hình ảnh bitmap người ta có giải pháp giảm đi dung lượng lưu trữ 2-100 lần nhờ kỹ thuật "nén ảnh".

Đó là 1 trong những yếu tố cấu thành nên dung lượng của ảnh chứ thực sự là ta chưa nghe thấy các tính lạ lùng về dung lượng ảnh theo kiểu của MD

Lấy thông tin từ: http://kythuatin.com/

Mắt Đêm
18-05-2005, 22:54
Hờ, thế này là.. chị Bibi không hiểu mấy nhỉ :(
Ok, phần ảnh vector em sẽ tạm không nói, vì ở đây em đang đặt ra vấn đề với đồ họa bitmap (tự nhiên chị nói cả phần vector vào đây --> lạc đề :mrgreen: )

1. Giá trị màu sắc của mỗi điểm ảnh & "độ sâu"(*) của mỗi điểm ảnh đó (thống nhất cho tất cả các điểm ảnh, được thiết lập trong phần header info của ảnh)
Chính xác, nó chính là cái phần em nói về các thông số ở đoạn đầu file ảnh, khi mở nó dưới dạng text, biểu thị ở hệ cơ số 16:Khi chuyển từ ảnh ra dạng số ở hệ cơ số 16, tôi thấy ảnh được qui định theo cách: Ngay ở đầu file có 3 kí tự qui định kiểu ảnh, ví dụ JPG, BMP..., tiếp theo là các số ở hệ cơ số 16, nó qui định lần lượt: kích thước ảnh, giới hạn thông tin vẽ nên ảnh là từ số thứ mấy tới số thứ mấy trong dãy số ấy, v.v...

2. Ta thường hay nghe hình này 8 bit, hình kia 16 bit hay 24 bit... Đó chính là độ sâu màu. "Độ sâu" màu là khỏang chia hay khả năng thể hiện độ màu của mỗi phân điểm đó.Cái thuật ngữ "độ sâu màu" là cái gì? chẳng là gì hết, với em thì em gọi nó là "tính chất ảnh theo tính toán bằng các hệ cơ số". Về cơ bản, ảnh được mã hóa bằng số, chẳng có tính "nông" hay "sâu" gì hết, các bác viết bài này thích bịa ra thuật ngữ thì.. em chiều :D
Vd hình 8 bit thì ta phải dùng 1 byte(1byte=8bit) để lưu trữ cho một điểm, nhưng 24 bit thì ta phải dùng tới 3 bytes lận đó. Hình 8 bit thể hiện được 2^8=256 màu tại mỗi điểm ảnh, Hình 24 bit thể hiện được 2^24=16777216 màu tại mỗi điểm ảnh. Như vậy rõ ràng về màu sắc thì hình 24 bit đẹp hơn nhiều.Khổ lắm, sao càng nói càng lạc đề thế không biết! chị Bibi đọc lại bài em viết đi nhé, em có chỉ rõ ở đây chỉ nói tới ảnh ở dạng RGB (tức là cho web), kí hiệu là #****** <--- mà nhìn vào đây, chẳng phải nó là 24 bits (3 bytes) ạ ? :)

Bài viết của chị Bibi sưu tầm chỉ là một cách nói mơ hồ khác, mà quan điểm gần giống ý của em. Có điều họ viết theo cái kiểu chung chung, không có số liệu cụ thể gì hết. Bài ấy không có yếu tố nào phản bác được ý kiến của em mà ;)

bibi
19-05-2005, 09:20
Ừa chị biết em đang phân tích hình ảnh theo dạng ngôn ngữ lập trình 8O 1 hướng đi khác & chị cũng chỉ muốn em hiểu 1 chút về cơ bản của pic thôi :)

Chuyện khẳng ddjnhuw của em chị chư nghe qua& thấy nó k được ổn lắm :)

0 %
19-05-2005, 09:36
nói thiệt chứ tớ cũng chả hiểu phân tích ảnh theo ngôn ngữ lập trình nó là cái gì cả :D
nhưng theo tớ thử ảnh thì thấy điều MD nói là đúng
dẫn chứng thực tế chứng minh:

ảnh gốc

http://www.tuoivaodoi.net/fd/Blue%20hills.jpg


ảnh sửa lại cho nó sáng lên:

http://www.tuoivaodoi.net/fd/Blue%20hills2.jpg

các pác save nó lại mà coi
cái ảnh gốc là 155KB
còn ảnh sau khi sửa cho sáng lên là 258KB
đó là dẫn chứng chứng minh
còn tớ chưa hiểu mấy cái lập trình ảnh cho lắm :-?

Mắt Đêm
19-05-2005, 14:42
chị cũng chỉ muốn em hiểu 1 chút về cơ bản của pic thôi@ chị Bibi: em cũng không biết rõ, em đặt giả thiết thế thôi, cảm ơn chị nhiều nhé.
@ anh 0%: thế nghĩa là cái em nói có phần đúng. Phải thử nghiệm nhiều hơn nữa :)

x1.7
23-05-2005, 13:43
Sau 1 hồi nghiên cứu, ta thấy thế này
Nếu ảnh không nén thì chỉ cần giữ nguyên kích thước dài x rộng thì màu gì cũng vậy mà :-)
Còn nếu ảnh nén thì còn phải xem xét nhiều vấn đề lắm.
Nếu là file ảnh không nén thì kích thước file sẽ là:
header + dài x rộng x bytes_per_pixel

Không tin huynh đài cứ mở Paint của Win lên, tạo 1 file ảnh, lưu lại (chọn format BMP 24 bit), chỉnh màu rồi lưu lại vào 1 file khác. So sánh thì huynh đài sẽ thấy dung lượng 2 file hoàn toàn như nhau, chính xác tới từng byte.

Mắt Đêm
23-05-2005, 13:59
Không tin huynh đài cứ mở Paint của Win lên, tạo 1 file ảnh, lưu lại (chọn format BMP 24 bit), chỉnh màu rồi lưu lại vào 1 file khác.
Hẹ hẹ! cho hỏi trong MS Paint của Win, làm thế nào để chỉnh cho ảnh sáng lên, hoặc là đặt opacity ?? :cuoilon: :cuoilon:

Xài Paint mà cũng ti toe :mrgreen:

x1.7
23-05-2005, 14:02
Xời ơi!! chỉnh màu ở chỗ khác, đâu phải nói ở paint đâu, ta không có máy thì đành ra dịch vụ, máy ở đó có paint là may lắm rồi, lại còn đòi photoshop corel .... lấy đâu ra

Mắt Đêm
23-05-2005, 14:23
Không tin huynh đài cứ mở Paint của Win lên, tạo 1 file ảnh, lưu lại (chọn format BMP 24 bit), chỉnh màu rồi lưu lại vào 1 file khác.
Xời ơi!! chỉnh màu ở chỗ khác, đâu phải nói ở paint đâu, ta không có máy thì đành ra dịch vụ, máy ở đó có paint là may lắm rồi, lại còn đòi photoshop corel .... lấy đâu ra
Câu trước đá câu sau, câu sau đấm câu trước, chừng nào bác thống nhất được lời nói thì hẵng trình bày ý kiến nhé ;)

x1.7
23-05-2005, 14:35
Thì đại khái là thế, câu sau đúng hơn câu trước vậy ? :D

Mắt Đêm
23-05-2005, 14:44
Thì đại khái là thế, câu sau đúng hơn câu trước vậy ? :D
Nói xằng! nếu đã không chắc thì đừng nói gì hết thì hơn!

Thế tóm lại là bác sửa ảnh bằng cái gì ? còn nếu sửa bằng chương trình tử tế, cứ tăng độ sáng của ảnh lên 1 chút rồi gửi cho tôi xem nào!

Yêu cầu không nói vớ vẩn nữa!

x1.7
23-05-2005, 14:58
đây, ta vừa làm nhanh 2 ảnh, mời huynh đài xem
http://img.photobucket.com/albums/v691/anhnghethuat4/gai/md.bmp và http://img.photobucket.com/albums/v691/anhnghethuat4/md.bmp
1 cái đen, 1 cái trắng, nhưng chính xác đến từng milibyte :D (đùa đừng có mà bắt bẻ nhé), đều là 30054 bytes

Mắt Đêm
23-05-2005, 15:02
đây, ta vừa làm nhanh 2 ảnh, mời huynh đài xem
http://img.photobucket.com/albums/v691/anhnghethuat4/gai/md.bmp và http://img.photobucket.com/albums/v691/anhnghethuat4/md.bmp
Hẹ hẹ, cho hỏi "khí không phải", bác có hiểu trong tiếng Việt, cụm từ "tăng độ sáng ảnh" với "đảo ngược màu ảnh" nó khác nhau thế nào không ? :cuoilon:
Em chán rồi, không thèm đôi co với bác nữa :cuoilon: Nói chuyện với chị Bibi và FD sướng hơn nhiều ;)

Mà chú thích thêm: bác có rotate ảnh theo trục y thì cũng thế cả, chả thay đổi tí nào, chỉ thay đổi thông tin về việc ảnh được đọc từ bên nào sang thôi :)

x1.7
23-05-2005, 15:15
hừm! được, để hôm nào ta down photoshop về rồi thử cho huynh đài xem, giờ down thì có mà đến tối :D

Mắt Đêm
23-05-2005, 15:21
hừm! được, để hôm nào ta down photoshop về rồi thử cho huynh đài xem, giờ down thì có mà đến tối :D
Hẹ hẹ, tốt thôi! nhưng nhớ là đừng có làm trò invert colors nhé :mrgreen: ở đây tôi đang nói tới việc tăng nhẹ ánh sáng ảnh lên :)

Một ví dụ:
http://luongsonbac.de/forum/showpost.php?p=357957&postcount=9

0 %
24-05-2005, 02:50
server chứa ảnh của tớ bị down rồi
có gì MD lấy lại 2 ví dụ khác minh hoạ cho mọi người cùng xem :D
còn invert color là đảo ngược ánh sáng mừ
đâu có tăng hay giảm độ sáng được :D