我媽想把一張九十年代的老合影放大掛牆上。掃描店給的是 150dpi 那一檔,成品只有 526×750 像素;沖印店說 6 吋至少要 1200 寬。我第一反應是「放大兩倍不就有了」,拿回來的那張卻是一層均勻的糊,人臉像隔著毛玻璃。
後面我又為微信大頭貼、表格截圖、一套舊圖示分別試過放大,才把「能放大」和「能看清」徹底分開。下面的像素數和列印尺寸都是按公式算過的,不是估。
放大不是變清晰,是補算出沒採集過的像素
一張 526×750 的圖總共 394500 個像素,都是當年掃描器真採到的,只有這麼多。放大就得填進更多格子,而多出的格子沒有新資訊,只能由鄰近已知像素推算。這就是「糊」的根源:插值把邊緣的過渡帶攤寬,本來一兩像素寬的跳變變成一條漸層。
還要注意「2 倍」的口徑:倍率說的是寬高,面積按平方算:
| 原圖 | 倍率 | 放大後尺寸 | 像素總數 | 面積倍數 |
|---|---|---|---|---|
| 526×750 | 2x | 1052×1500 | 1,578,000 | 4 倍 |
| 526×750 | 3x | 1578×2250 | 3,550,500 | 9 倍 |
| 526×750 | 4x | 2104×3000 | 6,312,000 | 16 倍 |
| 300×400 | 2x | 600×800 | 480,000 | 4 倍 |
| 144×144 | 4x | 576×576 | 331,776 | 16 倍 |
反推目標尺寸比選倍率有用。6 吋相紙是 102×152mm,按 300dpi 要 1205×1795 像素,按 150dpi 只要 602×898;7 吋(127×178mm)300dpi 是 1500×2102;A4(210×297mm)300dpi 是 2480×3508。那張 526×750 放大兩倍是 1052×1500,攤到 102×152mm 上是橫 262dpi、直 251dpi,比沖印店報的 300 略低但遠好過原尺寸——再開 3 倍湊 300 是浪費,多出的 9 倍面積全是推算。
銳化、降噪、局部對比度,各補什麼又各賠什麼
這三件事方向衝突,也說明為什麼不能把倍率和開關一起拉到滿。
插值先把邊緣攤平。我用的是雙三次插值分步漸進放大,逐級放大而不是一步跳到位,過渡更穩,但性質沒變:仍是推算鄰域,算不出原圖裡不存在的那條睫毛。
銳化是往回補的一手:反銳化遮罩提升邊緣兩側的對比度,讓「糊」看著俐落。代價很具體——邊緣外側會浮出一道亮邊(白襯衫與深色沙發的交界最明顯),雜訊也是高頻,會被一起放大成斑點。所以銳化不是越大越好,我先看背景再看人臉。
降噪走的是中值濾波預處理,在放大前先把孤立雜訊和壓縮偽影壓掉。這條路救得了「髒」,救不了「糊」:中值濾波拿鄰域中值替換像素,髮絲、睫毛、布料紋理這類一兩像素寬的細結構會一起被抹掉。先降噪後放大是對的次序,反過來雜訊被攤成斑塊,就分不出紋理和髒點。
局部對比度增強會讓暗部細節顯出來,但同一件事雙向發生:反覆存過 JPEG 的圖,8×8 塊狀偽影也是局部對比,一增強就跟著顯。我吃過這個虧,所以現在被反覆轉發過的圖,我先看區塊效應再決定開不開。
有一處必須說清:匯出的 PNG 不會因為編碼再損一次,這是檔案層面;放大本身不新增資訊,這是像素層面。「尺寸能到幾倍」和「能看清多少」不是同一個指標。
人像、文字、線條圖,放大的結果完全不同
人像佔大頭的是低頻區域(皮膚、天空、衣服),細節在邊緣,放大完主要輸在邊緣發虛與白邊,觀感還算能用——人會自然略讀。
文字和線條圖佔的是高頻,邊界只有黑白兩態。插值把邊界攤成灰階,再銳化就把每級台階描出亮邊,鋸齒看著比原圖更硬。我把舊表格截圖放大做辨識,錯字率比用小圖還高,問題出在被銳化過的筆畫交界處——「士」和「土」、「曰」和「日」本只差一橫,多出的白邊直接騙了辨識。
圖示和 UI 素材最省事的做法不是放大:能拿到向量或原始檔就重新匯出成目標尺寸,不夠就換素材。真要放大舊圖示,我把倍率壓到 2x、銳化留最小,寧可邊緣軟一點也不要一圈硬白邊——軟邊在小尺寸螢幕上會被眼睛忽略,硬白邊不會。
144×144 的大頭貼同理,放到 576×576 有 33 萬像素,螢幕上一撐就是全螢幕寬,臉還是那張臉:五官資訊量取決於原來那 2 萬個像素。想更清楚只能回原始大圖或重拍。
我現在的流程和那三個開關
先定用途,再決定要不要動手。螢幕上看的小圖(微信大頭貼、列表縮圖)我基本不放,顯示尺寸就那麼大,放大只是讓檔案變大;要沖印才需要真加像素。
能重新採集資訊就先重新採集。老照片我會問能不能重掃:5 吋(89×127mm)以 300dpi 掃是 1051×1500,600dpi 能到 2102×3000,這些像素是真採到的,比任何演算法推算都可靠。
然後走三步:先看有沒有雜訊要預處理;按反推的目標尺寸選倍率,從 2x 起試而不是預設拉滿;匯出前一定用拖曳左右對比查兩處——主體邊緣和純色背景。背景若起了一層髒斑,說明銳化和降噪的開支配得不對,這比主體看著不清更值得先調。
只要尺寸不需要增強,我就用 圖片尺寸調整 按百分比等比縮放,它不帶額外處理;增強完的圖體積會明顯上去(1200×1600 未壓縮按每像素四位元組算是 7,500KB、約 7.3MB,PNG 會再壓掉一部分,但仍隨面積增長),要發給別人就單獨走 圖片壓縮,別在放大時順手改格式。具體的 影像畫質提升 我放在最後,因為它給的是推算出來的過渡像素,能救的是「夠不夠大」和「邊緣不夠明確」,不是「資訊不夠」。
Q:放大四倍是不是解析度提高四倍?
不是。寬高各四倍,面積和像素總數都是十六倍,新增的十五份全是鄰域推算出來的,採集到的資訊量仍停在原來那一份上。
Q:為什麼放完檔案大了這麼多?
像素數按平方漲,未壓縮 RGBA 每像素四個位元組,1200×1600 就是 7,500KB、約 7.3MB;PNG 會再壓掉一些,但趨勢仍隨面積上漲。要控制體積就換格式或降品質,別降倍率——倍率是尺寸問題,體積是編碼問題。
Q:雜訊能不能全部去掉?
不能全去。壓雜訊是拿鄰域值替換目前值,孤立髒點消掉的同時,一兩像素寬的細紋理也一起沒了。我一般寧可留一點顆粒,因為顆粒像照片,抹平過頭像貼紙。
Q:老照片值得處理嗎?
看用途。螢幕上傳看、做小尺寸留念,值得;要沖印較大的,我會先問能不能重掃或找原底片,那才是新增資訊。臉部破損、刮痕屬於另一類工作,指望倍率和銳化是不行的。
Q:為什麼文字放大後比小圖更難認?
插值把黑白邊界攤成灰階,銳化又在台階處描出亮邊,筆畫間的空隙被這些亮邊佔掉。文字類我寧可重排或要原始檔案,也不要放大的截圖。
回到我媽那張合影。最後我選 2x 加最小銳化沖 6 吋:實際 250dpi 出頭,邊緣比原圖明確,沒有硬白邊,背景也沒起斑。要湊滿 300dpi 得開到 3x,多出來的是九倍面積的推算像素,看下來並不會更好。後來我問店裡重掃了一次 300dpi,那張 1051×1500 才是我真正想掛的版本——推算的像素只補尺寸,補不了當年沒採到的細節。