如何用PS修復一張模糊的二維碼?

比如說這樣的圖片。


雖然看起來LZ像是個打廣告的,不過還是來分享一下史上最完美的二維碼修復術吧……
首先先說一下其他回答:
a、按原始文本重新製作:無效。因為這是公眾號名片
b、每個格子修:會累死人的!

說一下方法吧:
1、拉色階:

http://weixin.qq.com/q/YXV-OyDmBf98bxuVFlnx (二維碼自動識別)

其實就是讓該黑的黑一點,該白的白一點。圖中數值無需參考,自己順眼就行。

2、對齊二維碼(其實與第一步無先後順序)

題主的二維碼又是傾斜又是拉伸的,連個正方形都不是,所以我要先處理成正方形:
Ctrl+T自由變換,按住Ctrl拖移頂點,讓二維碼對齊畫布邊緣。

3、數格子:

http://weixin.qq.com/q/YXV-OyDmBf98bxuVFlnx (二維碼自動識別)

這步極為關鍵。
假設最小的黑色方框是1×1,我們需要數出來一行或一列是多少
圖中兩條綠色參考線中間的那行,無論任何二維碼,標註「23」的那一部分都是1黑1白相間的,數起來很容易,總共是23個格子。
至於左上角和右上角,一定都是7格。
總共是7+23+7=37格。

4、縮小

Ctrl+Alt+I調整圖像大小,把高度和寬度設為剛才數出來的「37」像素
重定圖像像素模式選擇「鄰近(保留硬邊緣)」
為什麼要這樣選?我們平時縮放默認的都是兩次立方,它會根據一個像素點周圍的所有像素點去計算一個中值,對於複雜圖像,兩次立方是損失最小的縮放方式
但對於二維碼這種典型的硬直邊緣圖像,必須使用「鄰近」來縮放,它是直接取樣而不進行計算

於是我們得到了一個37×37的圖像,圖中可以看出圖片已經放大十幾倍顯示,邊緣依然硬直順滑……每個小黑格只有1像素

5、拉色階

還是為了讓該黑的黑,該白的白,把兩邊拉到中間的空白區域即可。

6、放大

放大依然要使用「鄰近」
按照37的倍數隨意放大,均不會失真。

http://weixin.qq.com/q/YXV-OyDmBf98bxuVFlnx (二維碼自動識別)

比如這個370×370的二維碼。如果有興趣,可以跟下面原圖對比,一格不差,可以愉快地放在任何地方了。

http://weixin.qq.com/q/YXV-OyDmBf98bxuVFlnx (二維碼自動識別)


這大概是全網第一個教程吧,不要盜版哦

————————————————————————————————————

十分感謝 @DS HS的提醒!用「閾值」可以減少一步操作,步驟如下:
1、對齊二維碼(之前忘了說首先要有一個正方形的畫布……至少大概是個正方形)
2、調整閾值(圖像→調整→閾值)

還是可以參考圖中所示的那一行去調整,黑白間隔大致均勻即可
3、數格子
4、縮放
因為調整閾值後就只剩黑白了,用「鄰近」去縮放就不會出現灰色,之前的步驟5就可以忽略了
我莫名其妙地就幫題主打了個廣告,至於有人提到能否轉載……隨便吧,你開心就好


補充一下吧,想要完全清晰的,只要掃一下再按原始文本製作一個QR code就好了。能掃出來的話就沒有必要用PS了,吃力不討好。


很佩服排名第一的大神,但是我讀書少…答非所問地湊個熱鬧吧…
Step1:手機掃描了一下,成功識別了。(題主莫非是打小廣告的心機boy!)
Step2:用二維碼編輯器進行解碼
Step3:根本不需要什麼重製操作,左邊調整一下容錯率,哎呀嘛,這不就出來了嗎?
好吧可能是巧合~

P.S. 公眾號名片解碼後為URL,完全可以重製的,即使圖形不一樣,效果一樣就好了嘛~


用PS裁剪一下,然後用MATLAB讀入數組,量一下最小的格子尺寸,按照這個尺寸遍歷一下,輸出數組。

晚上回去試一下。
我準備用到Photoshop,MATLAB,Excel

--------分割線----------
PS變形一下,然後劃分一下……一共是37x37的…

第一個點的x是12(大約):

最後一個點的x大約是221

這樣的話尺寸大約是221-12 = 210
除以37的話一個「元素」大約6x6

然後讀入MATLAB,切片循環,均值大於閾值來判斷黑白,輸出txt
導入EXCEL使用條件格式……

後來發現像素測量誤差有點大,放大圖片能在一定程度上減小測量的誤差……
因為這個圖像有扭曲,PS稍微修復了一下,但是肯定在一些地方失真了,閾值也不能很好地識別每一個點,所以結果是掃不出來的……其實一共就不到1600個點,手動爆點也可以……

渣代碼:

function zhihuQR

imgQR = rgb2gray(imread("D:QR.bmp"));
QR = ones(37,37);

bitSize = 25;
y0 = 52;
x0 = 98;
for i = 1:37
for j = 1:37
x = x0+(i-1)*bitSize;
y = y0+(j-1)*bitSize;
if mean(mean(imgQR(x:x+bitSize-1,y:y+bitSize-1)))&>130
QR(i,j)=0;
end
end
end

save("D:QR.txt","QR","-ascii")


都用不到ps,直接美圖秀秀都完事了
對比度強烈+銳化就是了
可問題是為啥要清晰化?
模糊的不是一樣能掃描出來嗎。
當然,如果想要進一步看起來清晰,,只要下苦功吧每個小格子手工給化成正方形即可。


能幫我大概恢復一下這照片嗎?


請問大神如何修復放大二維碼 微信的


特地註冊上來感謝樓主!! 
方法相當給力!

另外在調整時,會有一點點誤差,所以要用鉛筆工具調成1像素,參照原圖,改正過來。


解碼再編碼+1,本來就是機械生成的,PS幹嘛。。。


二維碼解碼,然後把解出來的內容再生成二維碼。一分鐘的事兒


第一種。我覺得可以改個大點的像素,然後濾鏡里的去除雜色
再來點微調【對比度色階銳化】
第二種。可以直接改黑白圖啊多方便。。。反正要掃 邊界灰度可以調整一下


佔個坑,明天用MATLAB給你做。
題主你好,抱歉到今天才做了,MATLAB我嘗試了
1. 直接二值化
2. 直方圖均衡化然後二值化
做出來的效果不是很理想,但掃描起來很容易,不過你的原圖本來就很容易掃(摔)。
下面直接貼圖吧。
原圖:

MATLAB直接二值化,函數 im2bw,level=0.4

level=0.5的時候黑塊會更多些。

先直方圖均衡化然後二值化,函數 histeq和im2bw,level=0.4

邊緣並不好,我也沒有使用PS把梯形的圖拉成正方形,就這樣吧。PS:軟廣,你好。


GET 還是很有用的!!


是不是可以用萬能的MATLAB呢


推薦閱讀:

這張海報怎麼做啊,感覺好帥?
你有沒有那些看起來特別傷感的圖片或者素描?
各種濾鏡app像美圖秀秀,與PS差距有多大?
日系溫馨風格小清新照片拍攝和處理要點有哪些?
如何把照片 PS 成趙石?

TAG:AdobePhotoshop | 圖片處理 |