驗證碼去噪 分離背景 分離文字 最大類間方差

2022-03-25 14:06:49 字數 1511 閱讀 5209

對驗證碼這一塊很少了解,但拜讀了別人的文章,忍不住轉為as**試試。原文:

一般都是直接轉為灰度圖,根據128(中值)做黑白二值化。但是這樣有些暗一些或者亮一些的,就無法正確分離。。

所以有一些動態方式計算閥值。例如最大類間方差。

對比一下以下兩個圖:第乙個用最大類間方差,第二個用128做固定閥值。

最大類間方差:

固定閥值:

}//直方圖平滑化

for (k = 0; k <= 255; k++)

pixelnum[k] = int(number(total) / 5.0 + 0.5); //

平滑化,左邊2個+中間1個+右邊2個灰度,共5個,所以總和除以5,後面加0.5是用修正值

}

//求閾值

sum = csum = 0.0;

n = 0;

//計算總的圖象的點數和質量矩,為後面的計算做準備

for (k = 0; k <= 255; k++)

fmax = -1.0; //

類間方差sb不可能為負,所以fmax初始值為-1不影響計算的進行

n1 = 0;

for (k = 0; k < 256; k++) //

對每個灰度(從0到255)計算一次分割後的類間方差sb

//沒有分出前景後景

n2 = n - n1; //

n2為背景圖象的點數

if (n2 == 0) //

n2為0表示全部都是後景圖象,與n1=0情況類似,之後的遍歷不可能使前景點數增加,所以此時可以退出迴圈

csum += number(k) * pixelnum[k]; //

前景的「灰度的值*其點數」的總和

m1 = csum / n1; //

m1為前景的平均灰度

m2 = (sum - csum) / n2; //

m2為背景的平均灰度

sb = number(n1) * number(n2) * (m1 - m2) * (m1 - m2); //

sb為類間方差

if (sb > fmax) //

如果算出的類間方差大於前一次算出的類間方差

}return

threshvalue;

}

php前後端分離如何使用驗證碼 校驗碼

jwt驗證碼 首先引用校驗碼類 composer require imyfone tp captcha開始使用,傳送校驗碼 useimyfone thecaptcha 自定義配置,可以用預設的不配置 config codeset 123456 驗證碼字元集合 expire 1800 使用背景 fon...

複雜背景的驗證碼破解

首先我們要去除它的背景,對於這樣稍微複雜的背景,用過去的方法很難做到,上圖的例子還不是很明顯,我發現很多背景色和字母色近似,而且字母顏色是不斷變化的,背景也是不斷變化的 那我初始的想法是找到中使用顏色最多的方法,於是我們用hsl表示各點顏色,接著進行統計,得到最大的幾個峰值,這裡便是中幾個最豐富的顏...

PHP生成帶有雪花背景的驗證碼

效果參考 檢驗校驗碼 show source test.php 做為現在的主流開發語言 以上本頁的原始碼 以下是生成驗證碼的原始碼 show source yanzhengma.php 做為現在的主流開發語言 session start session register login check nu...