<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用40年前的電腦打開女神圖片,太刺激!

          共 4441字,需瀏覽 9分鐘

           ·

          2022-06-26 11:26

          ????關注后回復 “進群” ,拉你進程序員交流群????

          來源丨大數據文摘


          搞過圖像處理的同學應該都認識這位吧



          這位名叫 Lena Forsen 的模特,自從在上世紀 70 年代被南加州大學信號與圖像處理研究所的助理教授 Alexander Sawchuk 用作測試圖片后,就一發(fā)不可收拾,成為圖像行業(yè)標準,被學者們復制和重新分析了數十億次。


          可以說,她是整個計算機圖像處理領域的“女神”。


          Medium 上一位博主突然產生了一個想法,在那些幾十年前古老的計算機上,能夠顯示“女神”Lena Forsen 的這張經典照片嗎?


          最古老的可以顯示照片的計算機,又是哪一款呢?


          好像還有點意思,我們一起來看看。


          遠在圖像產生之前


          我們現(xiàn)在熟悉的圖像格式其實離我們并不遠。JPEG 圖像格式于 1993 年推出,GIF 于 1987 年發(fā)布。


          那遠在這些圖像格式誕生之前,有沒有可能顯示圖像呢?


          70 年代的大型機和超級計算機確實能夠處理照片圖像,但那離普通人太遠了。

          第一臺個人電腦 Altair 8800 于 1975 年發(fā)布,用戶可以通過開關進入程序,并通過 Led 燈觀看結果:



          顯然這玩意是不能顯示圖像的。


          在 70 年代末,搭載 CP/M OS 的計算機出現(xiàn)了,這是一個完全成熟的操作系統(tǒng),有文件系統(tǒng)、磁盤驅動器、編譯器、程序和游戲。但是有一個問題 —— CP/M UI 只是文本。


          從理論上講,我們可以用 ASCII 圖形來顯示下面的內容:



          但是這顯然是一種作弊的手法,不能算數。


          再往后來呢?


          一些 CP/M OS 機器,比如 Visual 1050 計算機,是有圖形功能的,但是沒有通用的標準。



          最早可用于 CP/M 的格式之一是 RLE,它對黑白圖像進行編碼,分辨率為 256×192。


          我們終于能看到“女神”了!


          雖然實際上圖片可能看起來像這樣:




          正如我們所看到的,它遠非完美,但仍然比純 ASCII 好得多。這種格式的單色圖像大小約為 6 KB,因此在 CP/M 90 KB 軟盤上,最多可以保存 14 張這種質量的照片。


          后來計算機硬件變得更加強大。


          1981 年,CGA(彩色圖形適配器)被引入,MS-DOS 計算機能夠顯示 4 種顏色的高達 320x240 分辨率的圖形。


          這種品質的圖片可能看起來像這樣:



          這種格式的圖像大小約為 40 KB,因此在一張 360 KB 的軟盤上可以放置大約 8 張圖像。幾年后,1987 年推出的 VGA 適配器能夠顯示 256 張彩色圖像,這些圖像就更真實了。



          這張圖片的大小是 77kb,所以 5-6 張圖片可以保存在一張 720kb 的 1.44 英寸的磁盤上。


          后來,80 年代末推出的 SVGA (高級視頻圖形陣列) 適配器能夠使用 16M 顏色顯示高達 1280x1024 分辨率的逼真圖像,這實際上與我們今天所用的顏色非常接近了。


          其他的計算機模型在 80 年代和 90 年代也可以使用(蘋果,Commodore,ZX Spectrum 等等),它們都可以顯示不同類型的圖形。


          先有圖像還是先有圖像格式?


          先有雞還是先有蛋?先有圖像還是圖像格式?


          肯定是圖像。


          在最簡單的情況下,“格式”是不需要的,單色圖像只是一個位序列:



          因此,如果我們知道圖像的寬度和高度,并且計算機具有圖形功能,那么每個開發(fā)人員都可以制作一個程序,從二進制文件中顯示圖像“原樣”。


          順便說一下,在談論“自定義”圖像格式時,提到 1985 年發(fā)布的游戲“脫衣?lián)淇恕?Strip Poker) 也很有意思:



          我們可以看到,在第一個屏幕,玩家可以選擇兩個人物之一,“蘇姿”或“梅麗莎”,第二個屏幕是游戲本身。如果我們打開游戲文件夾,很容易看到這兩個人物的數據文件只是保存“原樣”,根本沒有壓縮,所有文件大小相同:


          1:03 AM             71 Melissa.txt12:18 AM           5768 Melissa1.pic12:18 AM           5768 Melissa2.pic12:19 AM           5768 Melissa3.pic12:20 AM           5768 Melissa4.pic12:21 AM           5768 Melissa5.pic5:40 AM             35 Opn.txt12:04 AM           5768 Opps.pic12:59 PM          50304 Poker.exe1:06 AM           1288 Screen.pic12:03 AM           5768 Stitle.pic5:09 AM             69 Suzi.txt12:02 AM           5768 Suzi1.pic1:33 AM           5768 Suzi2.pic12:00 AM           5768 Suzi3.pic12:01 AM           5768 Suzi4.pic12:00 AM           5768 Suzi5.pic


          游戲開發(fā)者盡最大努力縮小尺寸:每個文件的大小只有 5768 字節(jié)!


          這樣我們只能得到 320x18 的灰度圖像。事實上,我們可以使用 Python 打開 pic-file,看到許多細節(jié)缺失:



          也許游戲使用了單獨的背景圖片或者通過編程方式繪制了一些細節(jié) (比如垂直線) ,開發(fā)人員肯定使用了一些技巧來有效地在 320x240 的屏幕上顯示 320x18 的圖片。



          他們?yōu)槭裁匆ㄟ@么多精力呢?


          答案很簡單ーー當時許多計算機根本沒有硬盤驅動器,因此在軟盤上寫入游戲的能力至關重要。


          正如我們已經知道的那樣,第一張軟盤的大小只有 360 KB—— 這不僅對于游戲而言已經足夠了,對于 MS-DOS 引導文件也是如此。開發(fā)者實際上做到了,游戲的大小只有 140 KB。


          當然,“按原樣”保存圖像可能會占用空間,開發(fā)人員試圖找到更好的方法來保存數據。


          最早的圖像編碼方法之一是 RLE (游程編碼)。在這種格式下,每個數據塊都存儲在‘count,value’對中,這樣可以更有效地保存圖像。


          作為一個簡化的例子,黑白點序列“ bwwbwwwwww”可以保存為“1B3W1B4W”。正如我們所看到的,它更加緊湊,可以用于圖形或表格,但是對于真實感圖像,“壓縮”的圖像甚至可以比原始圖像更大。


          最早被廣泛使用的格式之一是 PCX (PiCture eXchange) ,它于 1985 年推出。這種格式也使用 RLE 編碼,正如我們看到的,頭部字段存儲了大量附加信息:


          // Standard PCX header (C/C++)struct PCXHeader {char   ID;           // ID, always 0x0Achar   Version;      // The version numberchar   Encoding;     // Use of encoding (0, 1)char   BitPerPixel;  // 1, 2, 4 or 8short  X1;   // The minimum x-coordinate of the image positionshort  Y1;   // The minimum y coordinate of the image positionshort  X2;   // The maximum x coordinate of the image positionshort  Y2;   // The maximum y coordinate of the image positionshort  HRes; // The horizontal image resolution in DPIshort  VRes; // The vertical image resolution in DPIchar   ClrMap[16*3]; // The EGA palette for 16-color imageschar   Reserved1;char   NumPlanes;    // Number of color planes: 1, 3, or 4short  BPL;          // The number of bytes of one color planeshort  Pal_t;char   Filler[58];} Header;


          PCX 格式實際上不太適合保存照片圖像,例如,同一幅 320x240 分辨率的“ Lenna”圖像的 16 色格式大小為 35 KB,256 色格式大小為 100 KB。


          GIF GIF 于 1987 年發(fā)布,與 PCX 相比,它要先進得多。


          GIF 使用的是 Lempel-Ziv-Welch (LZW) 算法,這種算法效率更高ーー同樣的 320x240 圖像以 GIF 格式保存,只有 37 KB 大小,而 PCX 是 100 KB 大小。


          1989 年,GIF 的擴展版本發(fā)布了,它也可以顯示動畫。令人驚訝的是,即使在今天,動畫 GIF 仍然在使用,甚至在本文中也可以看到這個例子ーー它仍然是最簡單的、跨平臺的方法,可以將動畫內容嵌入到頁面中。


          最后,于 1992 年推出了聯(lián)合攝影專家組制作的 JPEG 格式。它使用的是有損數據壓縮圖片,是專門為保存照片而設計的。


          該算法使用 DCT (離散余弦變換) 來保存數據,這個方法本身是在 1972 年提出的,但是正如我們所看到的,僅僅 20 年之后,公眾對這項技術的真正需求出現(xiàn)了。


          順便說一下,在 90 年代,色情圖片的銷售變成了一種生意。從技術角度來看,這些廣告來自 1994 年的《電腦雜志》 ,很有趣:



          總結


          讓我們回到最初的問題,在將近 40 年前的 80 年代初,有沒有可能在 XT 機器上看《花花公子》?


          從技術上講,答案是肯定的。這些機器能夠顯示圖像,并且有軟盤驅動器,這使得文件共享變得容易。下面是 1983 年制造的一臺真正的康柏便攜式計算機的運行過程:



           正如我們所看到的,它并沒有那么快,圖像加載時間大約是 40 秒,但它仍然可以工作。


          但實際上,這臺電腦是在 1983 年發(fā)布的,而 PCX、 GIF 或 JPEG 圖像格式甚至還沒有推出。

          -End-
          最近有一些小伙伴,讓我?guī)兔φ乙恍?nbsp;面試題 資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來,可以說是程序員面試必備!所有資料都整理到網盤了,歡迎下載!
          點擊??卡片,關注后回復【面試題】即可獲取
          在看點這里好文分享給更多人↓↓
          瀏覽 33
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  韩国免费一区二区 | 亚洲国产精品午夜AV | 九色一区| 蜜桃av在线 | 青娱乐在线视频精品 |