谁帮我解释数字图像处理的程序,刚学的,看不懂!

谁帮我解释数字图像处理的程序,刚学的,看不懂!,第1张

[i,lcmp]=imread('f:\tank.bmp')%=======读取图像 显示图像

imshow(i,lcmp)

ii=im2double(i) %=====将图像矩阵类型转换为double(图像计算很多是不能用整型的)

i1 = fft2(ii)%======傅里叶变换

i2 =fftshift(i1) %======将变换的频率图像四角移动到中心(原来良的部分在四角 现在移动中心,便于后面的处理)

i3=log(abs(i2)) %=====显示中心低频部分,加对数是为了更好的显示

程序一

figure,imshow(i3,[])

colormap(lcmp)

imwrite(i3,lcmp,'f:\ffttank.bmp') %===将上面i3输入到ffttank文件中

i5 = real(ifft2(ifftshift(i2))) %===频域的图反变换到空域 并取实部

i6 = im2uint8(mat2gray(i5))%===取其灰度图

imwrite(i6,lcmp,'f:\tank2.bmp','bmp') %===利用灰度图和原来取得颜色模板 还原图像

figure,imshow(i6)

title('反变换后的图像')

程序二

RGB = imread('autumn.tif') %===读取图像

I = rgb2gray(RGB) %==将其转为灰度

imshow(I)

J = dct2(I) %==二维dct变换,即离散余弦变换,

figure,imshow(log(abs(J)),[]) %==显示出变换后的图像,此时能量集中在左上角

colormap(jet(64)), colorbar%====建立颜色模板

figure

J(abs(J) <10) = 0 %==我理解为:因为dct变换只要保存左上角的低频小块就可以保持原图像信息,故其他部分(高频,其能量较小故值也小)就可以舍去

K = idct2(J)/255 %===这不加255,将下句改成imshow(K,[])也一样,只是显示的需要

imshow(K)

title('反变换后的图像')

程序三我就不太懂了 %后面是我的解释 很久没碰了 有的可能会有些问题 希望可以帮到你

作业1非常简单,楼本不是楼上说的没其他lib就不能做,只要把bmp文件的文件头和位图信息结构去掉,剩下的数据就是RAW了。根本不需要其他lib文件。只需要用C的标准库函数就完全可以非常简单的实现了。

#include <stdio.h>

#include <windows.h>

int main()

{

//变量

char title[255]//用于存放控制台窗口标题

HWND hwnd//窗口的句柄,H:Handle

HDC hdc, hmemdc//设备上下文句柄,DC:driver context

HBITMAP hbm//图片的句柄

BITMAP bm//图片结构体

RECT rect//矩形 rectangle

//把控制台窗口调成100字符宽度,40行

system("mode con cols=100 lines=40")

//1.取得窗口的句柄

GetConsoleTitleA(title, 255)//获取控制台窗口的标题

hwnd = FindWindowA(NULL, title)//通过窗口标题取得该窗口的句柄

//获取窗口的高度和宽度

GetWindowRect(hwnd, &rect)

//2. 获取画笔

hdc = GetDC(hwnd)

/* if(!hdc)

printf("No val\n")

else

printf("have\n")

TextOutA(hdc, 300, 400, "Hello world", strlen("Hello world"))*/

hmemdc = CreateCompatibleDC(hdc)//创建一个兼容的DC

//3.加载图片

hbm = (HBITMAP)LoadImageA(NULL, "123.bmp", IMAGE_BITMAP, 0, 0,

LR_LOADFROMFILE)

GetObject(hbm, sizeof(BITMAP), &bm)//得到图片信息

//4.把图片放入兼容DC中

SelectObject(hmemdc, hbm)

//5.在窗口上画出图片

BitBlt(hdc, 0, 0, bm.bmWidth, bm.bmHeight, hmemdc, 0, 0, SRCCOPY)

DeleteObject(hbm)

DeleteObject(hmemdc)

ReleaseDC(hwnd, hdc)

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11267248.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存