c语言sscanf函数的用法是什么
344
2022-09-30
matlab中使用二值化 腐蚀 膨胀 进行滤波
clc; close all; clear; workspace; fontSize = 14;grayImage = imread('test.jpg');[rows, columns, numberOfColorBands] = size(grayImage);if numberOfColorBands > 1 % 如果是彩色图像则转为灰度图像 grayImage = rgb2gray(grayImage);endfigure,imshow(grayImage, []);title('原始灰度图像');frequencyImage = fftshift(fft2(grayImage)); % 得到频域图myangle = angle(fft2(grayImage)); % 后续傅里叶反变换使用amplitudeImage = log(1 + abs(frequencyImage)); % 在FFT变换之后把浮点数据进行对数变化,线性映射到0~255范围内,压缩数据frequencyImage = abs(frequencyImage);figure,imshow(amplitudeImage, [])title('傅里叶变换得到的频域图像');amplitudeThreshold = 9.2; % 阈值分割的阈值brightSpikes = amplitudeImage > amplitudeThreshold; % 二值图像figure,imshow(brightSpikes);title('频域图像阈值分割');se=strel('disk',1');% 圆盘型结构元素 fc=imclose(brightSpikes,se); % 形态学闭操作等效于先膨胀再腐蚀figure,imshow(fc);title('频域图像阈值分割后膨胀腐蚀');I_reverse = imcomplement(fc); % 反色figure,imshow(I_reverse);title('反色');I_reverse(275:310, 190:235) = 1; % 保留中心区域figure,imshow(I_reverse); title('保留中心区域');median_filter=medfilt2(I_reverse,[3,3]); %进行3*3模板中值滤波,前面的处理可能会带来新条纹figure,imshow(median_filter);title('中值滤波');mask = imcomplement(median_filter);frequencyImage(mask) = 0;amplitudeImage2 = log(abs(frequencyImage));figure,imshow(amplitudeImage2, []);title('新的频谱图');aaa = ifftshift(frequencyImage); % 将处理后的幅度图反移位,恢复到正常状态bbb = aaa.*cos(myangle) + aaa.*sin(myangle).*1i; % 幅度值和相位值重新进行结合,得到复数fr = abs(ifft2(bbb)); % 进行傅里叶反变换,得到处理后的时域图像ret = im2uint8(mat2gray(fr)); figure,imshow(ret); %去除网纹成分后的图像title('傅里叶反变换还原图像');
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~