2017-06-18 10:36:31 suhaorangis 阅读数 7017

#苏浩然
#suhaoran109@163.com
#2017.06.14

import arcpy, envipy

envipy.Initialize(arcpy)
from arcpy import env
env.workspace="E:/aaa"
rasters = arcpy.ListRasters("*", "JPG")
for raster in rasters:
    inraster = raster
    outraster= "E:/bbb/"+raster.strip(".jpg")+".tif"
    arcpy.ConvertRaster_envi(inraster, outraster, "TIFF",  "")
print("All have done")

2019-04-17 17:07:21 zsc201825 阅读数 707

语言:Python,主要函数包:gdal,代码如下:

import gdal

# 读取要切的原图
in_ds = gdal.Open("1060_50.tif")
print("open tif file succeed")
width = in_ds.RasterXSize                         # 获取数据宽度
height = in_ds.RasterYSize                        # 获取数据高度
outbandsize = in_ds.RasterCount                   # 获取数据波段数
im_geotrans = in_ds.GetGeoTransform()             # 获取仿射矩阵信息
im_proj = in_ds.GetProjection()                   # 获取投影信息
datatype = in_ds.GetRasterBand(1).DataType
im_data = in_ds.ReadAsArray()                     #获取数据 

# 读取原图中的每个波段
in_band1 = in_ds.GetRasterBand(1)
in_band2 = in_ds.GetRasterBand(2)
in_band3 = in_ds.GetRasterBand(3)

# 定义切图的起始点坐标
offset_x = 0  
offset_y = 0

#offset_x = width/2  # 这里是随便选取的,可根据自己的实际需要设置
#offset_y = height/2

# 定义切图的大小(矩形框)
block_xsize = 100  # 行
block_ysize = 100  # 列

k=0
for i in range(width//block_xsize):
    for j in range(height//block_xsize):
        out_band1 = in_band1.ReadAsArray(i*block_xsize, j*block_xsize, block_xsize, block_ysize)
        out_band2 = in_band2.ReadAsArray(i*block_xsize, j*block_xsize, block_xsize, block_ysize)
        out_band3 = in_band3.ReadAsArray(i*block_xsize, j*block_xsize, block_xsize, block_ysize)
        print(out_band3)
        k+=1

## 从每个波段中切需要的矩形框内的数据(注意读取的矩形框不能超过原图大小)
#out_band1 = in_band1.ReadAsArray(offset_x, offset_y, block_xsize, block_ysize)
#out_band2 = in_band2.ReadAsArray(offset_x, offset_y, block_xsize, block_ysize)
#out_band3 = in_band3.ReadAsArray(offset_x, offset_y, block_xsize, block_ysize)

# 获取Tif的驱动,为创建切出来的图文件做准备
        gtif_driver = gdal.GetDriverByName("GTiff")

# 创建切出来的要存的文件(3代表3个不都按,最后一个参数为数据类型,跟原文件一致)
        out_ds = gtif_driver.Create(str(k)+'clip4.tif', block_xsize, block_ysize, outbandsize, datatype)
#print("create new tif file succeed")

        # 获取原图的原点坐标信息
        ori_transform = in_ds.GetGeoTransform()
        if ori_transform:
            print (ori_transform)
            print("Origin = ({}, {})".format(ori_transform[0], ori_transform[3]))
            print("Pixel Size = ({}, {})".format(ori_transform[1], ori_transform[5]))
        
        # 读取原图仿射变换参数值
        top_left_x = ori_transform[0]  # 左上角x坐标
        w_e_pixel_resolution = ori_transform[1] # 东西方向像素分辨率
        top_left_y = ori_transform[3] # 左上角y坐标
        n_s_pixel_resolution = ori_transform[5] # 南北方向像素分辨率
        
        # 根据反射变换参数计算新图的原点坐标
        top_left_x = top_left_x + i*block_xsize * w_e_pixel_resolution
        top_left_y = top_left_y + j*block_xsize * n_s_pixel_resolution
        
        # 将计算后的值组装为一个元组,以方便设置
        dst_transform = (top_left_x, ori_transform[1], ori_transform[2], top_left_y, ori_transform[4], ori_transform[5])
        
        # 设置裁剪出来图的原点坐标
        out_ds.SetGeoTransform(dst_transform)
        
        # 设置SRS属性(投影信息)
        out_ds.SetProjection(in_ds.GetProjection())
        
        # 写入目标文件
        out_ds.GetRasterBand(1).WriteArray(out_band1)
        out_ds.GetRasterBand(2).WriteArray(out_band2)
        out_ds.GetRasterBand(3).WriteArray(out_band3)
        
        # 将缓存写入磁盘
        out_ds.FlushCache()
        print("FlushCache succeed")
        
        # 计算统计值
        # for i in range(1, 3):
        #     out_ds.GetRasterBand(i).ComputeStatistics(False)
        # print("ComputeStatistics succeed")
        
        del out_ds
        
        print("End!")

 

2019-04-18 15:45:47 qq_36645465 阅读数 288

I=imread(‘flower.tif’);%读入图片
whos I
imfinfo(‘flower.tif’)
imshow(I);title(‘原始tif图像’)

%%真彩图像、转索图像、灰度图像、二值图像的相互转换
imwrite(I,‘flower.jpg’,‘quality’,10)%tif转化rgb
I1=imread(‘flower.jpg’);
figure;imshow(I1);title(‘真彩色图像’)
[X,map] = rgb2ind(I1,32);%真彩转索引
figure;imshow(X,map),colorbar,title(‘索引图像’)
rgb=ind2rgb(X,map);%索引转rgb
figure;imshow(rgb);title(‘rgb图像’)
G=rgb2gray(I1);
figure;imshow(G);title(‘rgb转灰度图像’)
G1=ind2gray(X,map);%索引转灰度
figure;imshow(G1);title(‘索引转灰度图像’)
G3=im2bw(I1);%图像转二值图像
figure;imshow(G3);title(‘二值图像’)

%%RGB/YIQ/HSV/YCbCr之间的转换
image = imread(‘lena.jpg’);
figure;subplot(331);imshow(image);title(‘原始图像’)
%RGB&YIQ
YIQ=rgb2ntsc(image);
subplot(332);imshow(YIQ);title(‘YIQ图像’)
rgb=ntsc2rgb(YIQ);
subplot(333);imshow(rgb);title(‘rgb图像’)
%RGB&HSV
HSV=rgb2hsv(image);
subplot(334);imshow(image);title(‘原始图像’)
subplot(335);imshow(HSV);title(‘HSV图像’)
RGB1=hsv2rgb(HSV);
subplot(336);imshow(RGB1);title(‘RGB图像’)
%RGB&YCbCr
yc=rgb2ycbcr(image);
subplot(337);imshow(image);title(‘原始图像’)
subplot(338);imshow(yc);title(‘ycbcr图像’)
rgb2=ycbcr2rgb(yc);
subplot(339);imshow(rgb2);title(‘RGB图像’)

2019-11-13 09:12:02 Harbour_zhang 阅读数 33

二值图像是指在图像中,灰度等级只有两种,也就是说,图像中的任何像素点的灰度值均为0或者255,分别代表黑色和白色。

在图像处理中,常用的二值图像是‘.TIF’格式的。这种格式的文件,每一个像素只由1比特的 0 或者 1组成。

例如,一张这样的二值图像:

在这里插入图片描述
在MATLAB 读取后,是一个256 * 256 的 由 0 或 1 组成的矩阵。

下面贴出把JPG格式图片转为TIF的MATLAB代码 :

img = imread('lena.jpg');  % 读取图片
i = rgb2gray(img)          % 转为灰度图片
level = graythresh(i);     % 自动选择转换为二值图像的阈值
b=imbinarize(i,level);     % 图像二值化
imshow(b);				   % 显示图片


imwrite(b,'lena.tif');      % 存储图片
2018-04-25 17:12:05 u011624019 阅读数 943

有时候一张tif图片是由多张图片合成起来的,如果要对每一张进行处理,势必得得到每一帧图片。下面程序实现将由多张图片合成的tif图片输出为多张png图片。MATLAB代码如下:


function DICDeal( Path  )
Img_Cell=imfinfo(strcat(Path,'DIC.tif'));
Img_Num=length(Img_Cell);

if ~exist(strcat(Path,'DIC'),'dir')
    mkdir(strcat(Path,'DIC'));
end
for i=1:Img_Num
    I=imread(strcat(Path,'DIC.tif'),i);
    originalimg=im2double(I);
    imgtemp = originalimg./max(max(originalimg));
    img=255*(imgtemp-min(min(imgtemp)))/(1-min(min(imgtemp)));
    img=uint8(img);
    imwrite(img,strcat(Path,'DIC\',num2str(i),'.png'),'png');
end
end

调用方式:将上面函数保存之后,在command窗口输入 DICDeal( FilePath1 ) 即可。FilePath1为你的tif图片放置路径。

TIF

阅读数 11

没有更多推荐了,返回首页