對應示例程式:
find_scratches_bandpass_fft.hdev
目標:實現不均勻光照的表面缺陷。
思路為:
先建立乙個合適的帶通濾波器,然後把影象(例程做了影象反轉)傅利葉變換在頻域濾波,加強高頻部分,然後變回時域做形態學處理,最後通過line_gauss檢測出缺陷。
影象:
**:
dev_update_off ()
dev_close_window ()
read_image (image, 'su***ce_scratch')
invert_image (image, imageinverted) //反轉影象
get_image_size (image, width, height)
dev_open_window (0, 0, width, height, 'black', windowhandle)
set_display_font (windowhandle, 16, 'mono', 'true', 'false')
dev_display (image)
* * optimize the speed of the fast fourier transform
* message := 'optimize the speed of the fast fourier transform.'
* message[1] := 'please wait...'
* disp_message (windowhandle, message, 'window', 12, 12, 'black', 'true')
* optimize_rft_speed (width, height, 'standard')
* disp_continue_message (windowhandle, 'black', 'true')
* stop ()
* * enhance the scratches by filtering in the frequency domain
gen_sin_bandpass (imagebandpass, 0.4, 'none', 'rft', width, height) //生成帶通濾波器
rft_generic (imageinverted, imagefft, 'to_freq', 'none', 'complex', width) //空間域到頻率域
convol_fft (imagefft, imagebandpass, imageconvol) //計算卷積
rft_generic (imageconvol, lines, 'from_freq', 'n', 'byte', width) //頻率域到空間域
* * segment the scratches by using morphology
threshold (lines, region, 5, 255)
connection (region, connectedregions)
select_shape (connectedregions, selectedregions, 'area', 'and', 5, 5000)
dilation_circle (selectedregions, regiondilation, 5.5) //圓形膨脹
union1 (regiondilation, regionunion)
reduce_domain (image, regionunion, imagereduced)
lines_gauss (imagereduced, linesxld, 0.8, 3, 5, 'dark', 'false', 'bar-shaped', 'false') //檢測線
union_collinear_contours_xld (linesxld, unioncontours, 40, 3, 3, 0.2, 'attr_keep') //連線近似共線輪廓
select_shape_xld (unioncontours, selectedxld, 'contlength', 'and', 15, 1000)
gen_region_contour_xld (selectedxld, regionxld, 'filled')
union1 (regionxld, regionunion)
dilation_circle (regionunion, regionscratches, 10.5)
* * display the results 顯示結果
dev_set_draw ('margin')
dev_set_line_width (3)
dev_set_colored (12)
dev_display (image)
dev_display (regionscratches)
用到的幾個運算元:
gen_sin_bandpass—生成帶通濾波器
rft_generic–傅利葉變換
convol_fft–卷積
rft_generic–傅利葉變換
lines_gauss–檢測線
union_collinear_contours_xld–聯合近似共線輪廓
參考資料:
[1]:
去光照不均勻
matlab clc,close all tic im imread test.png figure imshow im title 原圖 h,s,v rgb2hsv im 轉到hsv空間,對亮度h處理 高斯濾波 hsize min size im,1 size im,2 高斯卷積核尺寸 q sqr...
redis集群redisKey分步不均勻問題
專案中使用了redis集群,但是生產上發現rediskey 80 都被分配到了同乙個節點,導致該節點磁碟容量報警,其餘節點閒置的情況 專案中為了保持資料的準確性,當系統傳送異常時 單例項上的mset是乙個原子性 atomic 操作,所有給定 key 都會在同一時間內被設定,某些給定 key 被更新而...
Echarts繪製不均勻資料軸(y)
現有一組資料 最小的數是50000 5萬 最大的數是3000000000 30億 如果按照echarts正常的畫法,我們只需提取出來這些資料然後交給echarts顯示即可。在圖中,y 軸的數值均勻分布,最高的柱子在x軸 第五值為30億,但是x軸 第一值為5萬的柱子,根本看不見,因為差距太大了,包括x...