以上代码得到的图像很模糊
时间: 2023-08-06 12:18:20 浏览: 35
对图像进行降噪处理的同时,可能会降低图像的清晰度。如果降噪处理后的图像过于模糊,可以尝试对图像进行锐化处理。下面是一个使用 `imsharpen` 函数对图像进行锐化的示例代码:
```
I = imread('original_image.jpg');
I_gray = rgb2gray(I);
I_denoised = medfilt2(I_gray, [3,3]); % 中值滤波去噪
I_norm = imadjust(I_denoised, stretchlim(I_denoised));
I_sharpened = imsharpen(I_norm); % 图像锐化
I_recon = imresize(I_sharpened, size(I(:,:,1)));
imshow(I_recon);
```
这里的 `[3,3]` 参数指定了中值滤波器的大小,可以根据实际情况进行调整。`imsharpen` 函数的参数可以根据需要进行调整,例如可以使用 `imsharpen(I_norm, 'Amount', 1.5)` 来增加锐化强度。
相关问题
python 图像移动模糊代码
以下是一个简单的 Python 代码实现图像移动模糊:
```python
import cv2
img = cv2.imread('image.jpg') # 读入图像
kernel_size = 15 # 设置核大小
kernel_h = cv2.getGaussianKernel(kernel_size, 0) # 得到核
kernel_w = kernel_h.T # 转置得到横向核
kernel = kernel_h * kernel_w # 得到最终核
# 进行卷积操作
img_blur = cv2.filter2D(img, -1, kernel)
# 显示结果
cv2.imshow('Original Image', img)
cv2.imshow('Blurred Image', img_blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在代码中,我们首先读入一张图像,然后设置核大小并使用 `cv2.getGaussianKernel()` 函数得到一个高斯核。接着,我们将横向核转置得到纵向核,并将其相乘得到最终的核。最后,我们使用 `cv2.filter2D()` 函数将得到的核应用于图像上,得到移动模糊效果,并显示结果。
MATLAB实现图像运动模糊并分析代码
MATLAB实现图像运动模糊的主要步骤如下:
1. 加载图像;
2. 生成运动模糊核;
3. 对图像进行卷积,得到运动模糊后的图像。
下面是一个MATLAB的图像运动模糊示例代码:
```matlab
% 加载图像
img = imread('lena.png');
% 生成运动模糊核
len = 20;
theta = 30;
PSF = fspecial('motion', len, theta);
% 对图像进行卷积,得到运动模糊后的图像
img_blur = imfilter(img, PSF, 'conv', 'circular');
% 显示原始图像和运动模糊后的图像
figure;
subplot(1,2,1); imshow(img); title('Original image');
subplot(1,2,2); imshow(img_blur); title('Blurred image');
```
这段代码中,`fspecial`函数用于生成运动模糊核,`imfilter`函数用于对图像进行卷积。最后,通过`imshow`函数将原始图像和运动模糊后的图像显示出来。
需要注意的是,运动模糊核的大小和方向可以根据实际情况进行调整,`len`参数控制模糊核的长度,`theta`参数控制模糊核的方向。此外,`circular`参数表示在进行卷积时采用循环填充,这是因为在边界处进行卷积时可能会出现奇怪的效果。